栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何安全保存用户名/密码(本地)?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何安全保存用户名/密码(本地)?

如果您只是要验证/验证输入的用户名和密码,请使用Rfc2898DerivedBytes类(也称为基于密码的密钥派生功能2或PBKDF2)。这比使用诸如Triple
DES或AES之类的加密方法更安全,因为没有实际的方法可以将RFC2898DerivedBytes的结果返回到密码。您只能从密码转到结果。请参阅从密码字符串派生加密密钥和IV时,可以将SHA1密码哈希用作盐吗?有关.Net或字符串的示例和讨论,请使用密码c#Metro
Style for WinRT / Metro
进行加密/解密。

如果您要存储密码以供重复使用,例如将其提供给第三方,请使用Windows数据保护API(DPAPI)。它使用操作系统生成和受保护的密钥以及三重DES加密算法来加密和解密信息。这意味着您的应用程序不必担心生成和保护加密密钥,这是使用加密技术时的主要问题。

在C#中,使用System.Security.Cryptography.ProtectedData类。例如,要加密一条数据,请使用

ProtectedData.Protect()

// Data to protect. Convert a string to a byte[] using Encoding.UTF8.GetBytes().byte[] plaintext;// Generate additional entropy (will be used as the Initialization vector)byte[] entropy = new byte[20];using(RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider()){    rng.GetBytes(entropy);}byte[] ciphertext = ProtectedData.Protect(plaintext, entropy,    DataProtectionScope.CurrentUser);

安全地存储熵和密文,例如在设置了权限的文件或注册表项中,这样只有当前用户才能读取它。要访问原始数据,请使用

ProtectedData.Unprotect()

byte[] plaintext= ProtectedData.Unprotect(ciphertext, entropy,    DataProtectionScope.CurrentUser);

请注意,还有其他安全注意事项。例如,避免将诸如密码之类的机密存储为

string
。字符串是不可变的,因为无法在内存中通知它们,因此查看应用程序内存或内存转储的人可能会看到密码。请改用SecureString或byte [],并记住在不再需要密码时立即进行处理或清零。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506798.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号