从存储在SecureString中的密码生成派生密钥

时间:2012-03-26 23:42:37

标签: c# .net cryptography

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

有没有办法从SecureString生成加密密钥?

1 个答案:

答案 0 :(得分:-1)

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

编辑:换句话说,就像

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