C#:在文本文件中混淆密码的最佳做法?

时间:2012-10-25 02:53:48

标签: c# passwords obfuscation password-protection

Firefox必须存储密码。这完全是不安全的,但必须这样做,就是这样 我的C#app具有相同的要求(它是一种浏览器)。

Firefox不是以明文形式存储密码,而是对它们进行了一些混淆 这种混淆的最佳做法是什么?

例如,如果我理解的话,这是Firefox的策略:

  • 为应用的用户创建一个salt
  • 对于每个密码,在存储/检索时使用对称转换中的salt
  • 将密码文件存储在以salt命名的目录中。

我的理解是否正确?
有没有更好的策略,甚至是C#库?

Similar questions对于其他编程语言有不满意的答案,他们并没有像Firefox那样,只是建议使用rot13或base64,这使得自动恶意软件很容易识别出混淆密码未知的软件。 (只是搜索常用密码的base64值)

再一次:我知道,它不会抵抗任何攻击者。但如果Firefox cares我也应该这样做。

2 个答案:

答案 0 :(得分:6)

您应该使用ProtectedData class加密密码。

您可以指定DataProtectionScope.CurrentUser使用当前用户的Windows登录密码加密数据,这样其他任何用户都无法对其进行解密(如果用户没有密码,这也有效)

答案 1 :(得分:1)

使用加密而不是混淆可能是最容易的。混淆代码通常会使某人在查看源代码时更难识别代码中的内容。但是,如果你不加密信息,人们仍然可以解决这个问题。

我的建议是使用AES-256或Tripple DES-128加密。

很容易,您可以将密码存储在文本文件中,然后加密。只有通过浏览器才能解密文件。