如何为winform C#应用程序实现密码恢复[关闭]
Posted
技术标签:
【中文标题】如何为winform C#应用程序实现密码恢复[关闭]【英文标题】:how to implement password recovery for a winform C# application [closed] 【发布时间】:2013-02-16 14:41:41 【问题描述】:我有一个完全基于 Windows 的 C# 编写的 Winform 应用程序。它没有任何网络模块,我也没有注册任何网络域名。 该软件已完成,但现在我需要合并另一个称为密码恢复的功能。我是这个东西的新手,所以请帮助我。 我不想坚持下去。我只是希望如果用户忘记了密码,他所做的就是按下“忘记密码?”登录屏幕上的超链接和密码应该在他的电子邮件帐户中通过电子邮件发送给他。如何实现此功能?请给出一个代码示例,考虑到我的电子邮件是“source@gmail.com”,目标电子邮件是“destination@gmail.com”
【问题讨论】:
我不是要讽刺什么的,但是如果你完成了一些包并且我很确定其中涉及一些复杂的功能,真的很难相信密码恢复这样简单的事情对你来说是一块硬饼干! 您想将密码保存在哪里?在本地机器上?另请注意,保留原始密码是一个坏主意,这就是为什么大多数忘记密码的链接会向您发送一个链接来重置它,而不是检索它。谷歌单向密码加密。 如果您将其存储在本地,那么电子邮件可能不像在网络上那样有用。只需存储一些挑战问题的答案并在用户有正确答案时显示密码(例如,你父亲的中间名是什么) 不要在 Winforms 应用中使用密码,操作系统登录更可靠。 @HansPassant 通常是正确的,但我们不应该再猜测这种情况。据我们所知,它可能是一个哑终端或仓库中的共享电脑,用于输入时间表。 【参考方案1】:正如 user1932945 所说,您永远不应该存储实际密码。相反,您应该散列他们的密码,在密码末尾添加一个随机生成的数字(您的密钥)。然后散列新密码。最后,将散列密码与密钥一起存储。然后,当他们登录时,您获取他们的密码并从存储密钥的任何位置获取密钥,再次将其添加到密码中,对其进行哈希处理,然后将其与您存储的哈希密码进行比较。
当他们忘记密码时,您应该通过电子邮件向他们发送重置密码的方法。当他们重置它时,您按照我已经提到的步骤来存储新密码。
【讨论】:
+1 RandomlyKnighted
还有,根据您的建议,也许 OP 需要您提供一个示例【参考方案2】:
您永远不应该通过电子邮件将密码发送给某人。这意味着您正在存储密码,您永远不应该这样做。相反,您应该允许用户重置他们的密码。
执行此操作的方法是通过电子邮件发送代码,该代码将触发 winform 应用程序中的密码重置。重置代码可以是 winform 应用程序根据请求生成的 guid,并存储在内存中,直到收到电子邮件。
【讨论】:
以上是关于如何为winform C#应用程序实现密码恢复[关闭]的主要内容,如果未能解决你的问题,请参考以下文章