恢复密码生成
Posted
技术标签:
【中文标题】恢复密码生成【英文标题】:Recovery Password Generation 【发布时间】:2013-02-10 07:26:55 【问题描述】:在我们的应用程序测试期间,我们发现如果用户忘记密码,则无法进入应用程序。
在发现这一点后,我们实施了如下密码生成技术 1. 使用用户信息创建特定字符串。 2.对字符串应用SHA1 3. 取部分SHA1哈希作为密码
以上算法同时应用于服务器端和设备端。这样他们就不需要有任何交互了。所以如果用户忘记了他的密码,他可以请求服务器。服务器运行上述算法并将生成的密码发送到用户电子邮件。在设备端,使用相同的中音生成相同的密码。所以当用户输入它时,它匹配并且用户被授予访问权限。
不知何故我对此并不满意,因为我们使用相同的字符串来生成密码。因此,每次用户忘记密码并生成密码时,他都会得到相同的密码,这不是密码生成器的工作方式。
所以我正在考虑向字符串添加更多内容,这些内容将是可变的,但在服务器端和设备端都是相同的。其中一个选项是使用字符串中的日期,但如果服务器位于不同的时区设备和服务器将生成不同的密码。
有没有更好的解决方案?请建议...
【问题讨论】:
这个算法破坏了Kerckoffs's principle。虽然不是直接等效的,但我相信它适用。本质上,任何加密方法(或者在这种情况下是密码存储)都不应依赖于保密的算法来保证安全。如果我知道算法,那么我可以尝试计算用户的密码。 那你能提供一些解决方案吗? 【参考方案1】:听起来您想使用“基于哈希的消息验证码”(HMAC)。这背后的想法是,即使在纯文本连接中,用户的密码也是不可见的,因为用户名、密码和服务器生成的“会话密钥”用于生成随会话密钥更改而更改的哈希。鉴于哈希是单向的,不可能从通过网络连接发送的哈希中推导出用户的密码。
太阳底下没有新鲜事。
【讨论】:
没怎么关注:(你能不能换个说法?我也浏览了你提供的链接,但似乎它也会一直生成相同的密码.以上是关于恢复密码生成的主要内容,如果未能解决你的问题,请参考以下文章