Rfc2898DeriveBytes类从给定的字符串密码派生新的加密密钥。据我了解,这应该增加给定键的安全性,因为您永远不必永久存储密钥 - 它总是可以从用户已知的值派生。但是,由于它只需要string
值作为输入,因此原始密码会保留在内存中,直到GC为止。在我看来,这是一个潜在的安全问题,就像将密钥存储在系统上一样危险。 .NET框架提供SecureString实现来保护内存中的密码。但是Rfc2898DeriveBytes不接受安全字符串。
有没有办法从SecureString生成加密密钥?
答案 0 :(得分:-1)
初始化加密类时使用SecureString.ToString()
有什么问题?当方法结束时,.ToString()
的返回值将不再可访问,对吧?
编辑:换句话说,就像
var crypto = new Rfc...(secureString.ToString());