【发布时间】:2010-12-08 03:57:55
【问题描述】:
我正在尝试在我的应用程序中实施 AES 加密。我有以下代码来创建用户密码的散列版本。
PasswordDeriveBytes passwdHash = new PasswordDeriveBytes( password, salt,
"SHA1", 128 );
byte[] keyBytes = passwdHash.CryptDeriveKey( "AES", "SHA1",
192, iv );
第二行抛出System.Security.Cryptography.CryptographicException 错误消息Object identifier (OID) is unknown。我使用 Reflector 来验证是否抛出了错误,因为 CryptDeriveKey() 不喜欢“AES”算法名称(我使用 AesCryptoServiceProvider() 来执行加密)。我尝试将名称更改为“AESManaged”、“AES192”和“Rijndael”,但它们都抛出相同的异常。
如何让它工作?或者是否有派生密钥字节的替代方法? 此外,是否有任何关于允许的算法名称字符串是什么的文档?我在 MSDN 文档中找不到该功能的任何内容。
我正在使用 Visual Studio 2008 并以 .NET 框架 3.5 为目标
提前感谢您的帮助!
【问题讨论】:
标签: c# .net .net-3.5 encryption cryptography