从种子生成的唯一编号

时间:2013-08-30 03:14:19

标签: c# algorithm

我不知道这是否是提出这个问题的正确位置。

我希望通过为我的用户提供一个带有嵌入式硬编码的软件来实现身份验证,它表示它是嵌入在用户不知道的软件中的x。该软件有一个按钮,然后当用户按下它时,它将能够随机生成随机数* s *,如a,b,c,d,e f ....等基于x

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

结论,是否存在给定x

的算法
f(x) = randomnumbers
g(x, randomnumbers) = true/false

由于

2 个答案:

答案 0 :(得分:1)

您需要查看HMACSHA1课程。

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

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

如果你想提高客户证书或软令牌,你可能会更好。

答案 1 :(得分:0)

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

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