在properties.settings文件中安全存储密码的最佳方法是什么
本文关键字:密码 最佳 方法 是什么 存储 安全 properties settings 文件 | 更新日期: 2023-09-27 18:20:54
可能重复:
在WinForms app.config、.NET 中加密密码
我想能够为登录框存储用户名/密码对。每次加载应用程序时,都会从Properties.Settings文件加载保存的凭据,然后用这些值填充登录框。
我知道密码总是有可能被黑客入侵,但任何事情都比在properties.settings文件中存储明文要好。
我一直在考虑使用SecureString,但所要做的只是防止密码存储在内存中的明文中。
有什么最好的处理方法吗?
我不明白为什么会提到散列;如果它们被设计为不可逆的,如何使用它们来预先填充字段?
当我不久前做类似的事情时,我做了以下操作:
AES_encrypt ( username + saltString1 + password + saltString2 )
存储结果并存储AES密钥。
填充字段:
- 调用数据和密钥
- 使用密钥解密数据
- 拆分关于
saltString1
的字符串 - 拆分的第一个值是用户名
- 第二个值是
password + saltString2
- 使用
saltString2
的子字符串,并且您有密码
- 使用
您可以只存储密码的散列,而不是保存纯文本。然后,当您比较存储在用户数据库中的密码和输入的密码时,您比较的是散列,而不是打开的文本。查看System.Security.Cryptography…
如果您想用密码预填充登录框,那么它必须存储在的明文中,无论是作为源、数据库、配置或设置文件中的文字字符串,还是作为编译资源中的字符串。
还要注意,从屏蔽的密码字段中提取密码可以像向文本框发送消息一样简单。
您可以考虑加密密码,或者生成MD5哈希并存储。当用户登录时,使用与原始密码相同的过程,并比较结果以查看是否输入了正确的密码,但这不会让您预先填充登录框。
另一方面,如果要填充对话框,那么需要密码有什么意义?你也可以只显示一个表单,上面写着"按enter键登录",根本没有字段。