1

Firefox 必须存储密码。这是完全不安全的,但它必须这样做,仅此而已。
我的 C# 应用程序具有相同的要求(它是一种浏览器)。

Firefox 不是以明文形式存储密码,而是对其进行了一些混淆。
这种混淆的最佳实践是什么?

例如,如果我理解得很好,这里是 Firefox 的策略:

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

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

其他编程语言的类似 问题也有不尽人意的答案,它们还不如 Firefox,只是建议使用 rot13 或 base64,这使得自动化恶意软件很容易识别未知软件中的混淆密码。(只搜索常用密码的base64值)

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

4

2 回答 2

6

您应该使用ProtectedData该类来加密密码。

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

于 2012-10-25T02:56:56.890 回答
1

使用加密而不是混淆可能是最容易的。混淆代码通常会使人们在查看源代码时更难识别代码中的内容。但是,如果您不加密信息,人们仍然可以弄清楚。

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

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

于 2012-10-25T02:59:06.477 回答