c# - 从存储在 SecureString 中的密码生成派生 key

标签 c# .net cryptography

Rfc2898DeriveBytes类从给定的字符串密码派生新的加密 key 。据我了解,这应该会增加给定 key 的安全性,因为您永远不必永久存储 key ——它总是可以从用户已知的值中派生出来。但是,由于它只需要一个 string 值作为输入,因此原始密码会一直保留在内存中,直到它被 GC 处理为止。在我看来,这是一个潜在的安全问题,就像将 key 本身存储在系统上一样危险。 .NET 框架提供了一个 SecureString实现以保护内存中的密码。但是 Rfc2898DeriveBytes 不接受安全字符串。

有什么方法可以从 SecureString 生成加密 key 吗?

最佳答案

初始化加密类时仅使用 SecureString.ToString() 有什么问题?当方法结束时,.ToString() 的返回值将无法再访问,对吧?

编辑:换句话说,类似

var crypto = new Rfc...(secureString.ToString());

关于c# - 从存储在 SecureString 中的密码生成派生 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9881451/

相关文章:

c# - stylecop + resharper 控制评论

.net - 如何配置 Cosmos DB .NET 3.0 SDK 以使用驼峰式大小写进行序列化?

javascript - 为什么nodejs加密签名功能只接受privateKey pem格式?

java - 使用单个密码对象或两个不同的对象进行解密和加密操作?

Javacard - 使用明文 pin 以外的其他方式保护 RSA 私钥?

c# - 从给定的时间戳字符串中查找时区和时间

c# - 将难以形成的 XML 反序列化为 C# 对象

c# - 客户端的 WCF 服务 - SSL 证书

c# - XSockets/WebSockets 无法从托管计算机以外的其他计算机访问

c# - 为什么使用 HttpWebResponse 时会收到错误请求(代码 400)?