我正在尝试使用.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中的数据库条目,这是我的第一个加密密码。我很感激任何帮助。
答案 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。