从密码中获取加密密钥

时间:2009-01-13 03:23:32

标签: c# asp.net

我正在尝试使用.net 2.0 PasswordDeriveBytes类生成密钥。

  PasswordDeriveBytes pdb = new PasswordDeriveBytes("blahblahblah",null);
  byte[] iv = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
  byte[] key = pdb.CryptDeriveKey("TripleDES", "SHA1", 128, iv);

代码抛出“CryptographicException:指定了无效的标志”。当试图执行上面的CryptDeriveKey方法时。我正在尝试加密asp.net中的数据库条目,这是我的第一个加密密码。我很感激任何帮助。

3 个答案:

答案 0 :(得分:4)

根据MSDN:

“如果keySize参数设置为0位,则使用指定算法的默认密钥大小。”

MSDN PasswordDeriveBytes.CryptDeriveKey Method

PasswordDeriveBytes pdb = new PasswordDeriveBytes("blahblahblah",null);
byte[] iv = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
byte[] key = pdb.CryptDeriveKey("TripleDES", "SHA1", 0, iv);

除非您有充分的理由指定我建议的尺寸,否则将其保留为0。

答案 1 :(得分:2)

TripleDES的密钥长度为192位,请尝试:

byte[] key = pdb.CryptDeriveKey("TripleDES", "SHA1", 192, iv);

尝试使用this link代码

答案 2 :(得分:2)

您应该考虑使用Rfc2898DeriveBytes而不是PasswordDeriveBytes。