我正在创建一个简单的日记应用程序。 我希望用户能够设置自定义启动密码。
但是最佳实践是什么?我在哪里安全地存储密码?我想最好存储密码的哈希值 - 如何做到这一点?
将密码(或哈希值)存储在易于读取的 XML 文件中不是最佳选择吗?然后,只需打开 XML 文件并删除哈希字符串,那么在应用程序加载时就不会出现密码了,对吗?
致以诚挚的问候
最佳答案
让我们带着阅读你的日记的愿望来解决这个问题。您对哈希值的分析还不错,但假设您确实定义了启动密码,并且我们将哈希值存储到某个 XML 文件中的密码中。是什么阻止我反汇编您的应用程序(如果我们考虑使用 C# 或任何 JIT 语言)并仅更改密码验证子例程以始终返回 true
?
您需要的是对实际日记/页面进行加密。请参阅answer to this SO question完整的程序会破坏你的日记页面,以便安全地以纯文本形式保存,并且在没有密码的情况下很难检索。
您现在还可以选择存储哈希值,并为用户验证其有效性;因为打开每个日记页面仍然需要实际密码。
编辑
这个SO answer甚至更好。两个版本都使用 RijndaelManaged
class它是.NET 加密和解密框架的一部分。
关于c# - 使用密码/带有密码保护的日记应用程序保护 Windows 窗体的最佳实践)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9849872/