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/