在properties.settings文件中安全存储密码的最佳方法是什么

本文关键字:密码 最佳 方法 是什么 存储 安全 properties settings 文件 | 更新日期: 2023-09-27 18:20:54

可能重复:
在WinForms app.config、.NET 中加密密码

我想能够为登录框存储用户名/密码对。每次加载应用程序时,都会从Properties.Settings文件加载保存的凭据,然后用这些值填充登录框。

我知道密码总是有可能被黑客入侵,但任何事情都比在properties.settings文件中存储明文要好。

我一直在考虑使用SecureString,但所要做的只是防止密码存储在内存中的明文中。

有什么最好的处理方法吗?

在properties.settings文件中安全存储密码的最佳方法是什么

我不明白为什么会提到散列;如果它们被设计为不可逆的,如何使用它们来预先填充字段?

当我不久前做类似的事情时,我做了以下操作:

AES_encrypt ( username + saltString1 + password + saltString2 )

存储结果并存储AES密钥。

填充字段:

  • 调用数据和密钥
  • 使用密钥解密数据
  • 拆分关于saltString1的字符串
  • 拆分的第一个值是用户名
  • 第二个值是password + saltString2
    • 使用saltString2的子字符串,并且您有密码

您可以只存储密码的散列,而不是保存纯文本。然后,当您比较存储在用户数据库中的密码和输入的密码时,您比较的是散列,而不是打开的文本。查看System.Security.Cryptography…

如果您想用密码预填充登录框,那么它必须存储在的明文中,无论是作为源、数据库、配置或设置文件中的文字字符串,还是作为编译资源中的字符串。

还要注意,从屏蔽的密码字段中提取密码可以像向文本框发送消息一样简单。

您可以考虑加密密码,或者生成MD5哈希并存储。当用户登录时,使用与原始密码相同的过程,并比较结果以查看是否输入了正确的密码,但这不会让您预先填充登录框。

另一方面,如果要填充对话框,那么需要密码有什么意义?你也可以只显示一个表单,上面写着"按enter键登录",根本没有字段。