-2

我不知道这是否是问这个问题的正确地方。

我想通过给我的用户一个带有嵌入硬编码数字的软件来实现身份验证,说它是嵌入在用户不知道的软件中的 x。该软件有一个按钮,当用户按下它时,它将能够根据x随机生成随机数* s * 如a, b, c, d, e f....等

当用户进入我的网站时,他们需要使用其中有 x 硬编码的软件并生成一个随机数,c说。在我的网站中输入用户名和 c 作为密码(使用软件即时生成的密码),我的网站知道 c 确实由 x(合格)生成,这是我在我的软件中实现的密码并将其分发给用户。所以我允许用户登录。如果用户输入的随机数不是基于 x 生成的,我会立即知道并阻止用户登录。此实现背后的原因是为了防止修复密码。

结论,有没有一种算法,给定 x

f(x) = randomnumbers
g(x, randomnumbers) = true/false

谢谢

4

2 回答 2

1

您需要查看HMACSHA1类。

给定私钥,您可以生成用户名的安全摘要。

话虽如此,您需要非常小心地在您的应用程序中实施“增强”安全性。我看到的主要问题是密钥不会过期,您无法撤销它。

如果您想提高一个档次,最好查看客户端证书或软令牌。

于 2013-08-30T03:30:41.053 回答
0

一个更简单的解决方案可能是x在生成数据库时将其存储在您自己的数据库中并将其插入到您的软件中。然后,当软件想要连接时,它会发送x并且您的站点会根据您的数据库检查它是否存在。这几乎只是一个序列,除了不是根据x模式检查序列(您的值),而是根据实际生成的密钥检查它。没有 keygen 可以将生成的密钥放入您的数据库中。

担心x被拦截?只需确保使用 HTTPS。没有 MITM,没有传递哈希,没有用户参与(即透明)。

于 2013-08-30T03:24:45.280 回答