c# - 使用密码/带有密码保护的日记应用程序保护 Windows 窗体的最佳实践)?

标签 c# visual-studio-2010 passwords

我正在创建一个简单的日记应用程序。 我希望用户能够设置自定义启动密码。

但是最佳实践是什么?我在哪里安全地存储密码?我想最好存储密码的哈希值 - 如何做到这一点?

将密码(或哈希值)存储在易于读取的 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/

相关文章:

c# - Collada (dae) 可以用作内容吗?

c# - 潜在的并发问题?

c# - 围绕原点旋转一个点的正确三角法

c++ - 阻止我将 VS2010 中的静态库正确链接到我的 .dll 的原因是什么

java - 如何在 Java-mysql 中验证用户名和密码?

security - 为什么不使用 MD5 进行密码散列?

python - python中的密码求解器循环计数

c# - namespace 和表共享相同的名称(哎呀!)

c# - 无法将 MySql 添加到 C# 程序(引用和 "using"已添加)

.net - Visual Studio vb.net 转到行快捷键(Ctrl + G)不起作用?