security - 引脚生成

标签 security encryption random cryptography

我正在寻求开发一个系统,在该系统中我需要为每个用户分配一个唯一的密码以确保安全。用户输入此密码仅作为识别自己身份的一种方式。因此我不希望用户能够猜测其他用户的密码。假设我的最大用户数是 100000,这个 PIN 码应该有多长?

例如1234 4532 3423

我应该通过某种算法生成此代码吗?或者我应该随机生成它?

基本上我不希望人们能够猜测其他人的密码,它应该支持足够数量的用户。

如果我的问题听起来有点令人困惑,我很抱歉,但很乐意澄清任何疑问。

非常感谢。

更新

阅读完下面的所有帖子后,我想添加一些更多细节。

  1. 我想要实现的目标与刮刮卡非常相似。
  2. 用户会获得一张卡,他/她必须刮开该卡才能找到 PIN 码。
  3. 现在,用户必须能够使用此 PIN 码访问我的系统。

我无法添加额外的安全性(例如用户名和密码),因为这样会阻止用户使用刮刮卡。我希望在限制范围内尽可能难以猜测 pin 码。

再次感谢大家的精彩回复。

最佳答案

如果将其附加到唯一的已知用户ID(仍然可以是数字),4个随机数字应该足够了[按照starblue的建议]

伪随机数生成器也应该没问题。您可以使用可逆加密 (AES) 或单向哈希将它们存储在数据库中

您主要担心的是,一个人在被锁定之前可能会错误输入 PIN 码多少次。这应该很低,比如大约三...这将阻止人们猜测其他人的数字。

任何超过 6 位数字,人们就会忘记它们,或者更糟糕的是,将它们写在显示器上的便利贴上。

假设帐户因 3 次错误尝试而被锁定,则使用 4 位 PIN 码加上用户 ID 组件 UserId (999999) + Pin (1234),您就有 3/10000 的机会被别人猜到。这是可以接受的吗?如果不是,则将引脚长度设为 5 并得到 3/100000

关于security - 引脚生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/404806/

相关文章:

c# - 使用 PHP 和 c# 的 Mcrypt 和 base64

java - 需要一个非常快速的 Java 机制来以随机顺序迭代哈希表中的条目

c# - 使用 C# 访问 Windows 服务证书存储中的 x509 证书

javascript - 有关安全性的App API设计建议

android - 导致 Android 应用程序崩溃

java - Android KeyStore 系统 - 保存 key 对?

node.js - 如何确保多个租户的 SAML 安全?

java - 仅加密图像文件的内容而不是整个文件

java - 选择随机 Java 变量?这可能吗

python - 从python中的双变量正态采样