Я пытаюсь реализовать шифрование 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 Framework 3.5
Заранее благодарен за вашу помощь!