Мне нужно создать хэш пароля PBKDF2-SHA256, но у меня возникли проблемы.
Я скачал репозиторий Bouncy Castle, но немного застрял в поиске того, что искал в модуле. Тесты.
Нашел образец кода здесь, но он работает только с SHA1. Ключевой бит кода:
/// <summary>
/// Computes the PBKDF2-SHA1 hash of a password.
/// </summary>
/// <param name="password">The password to hash.</param>
/// <param name="salt">The salt.</param>
/// <param name="iterations">The PBKDF2 iteration count.</param>
/// <param name="outputBytes">The length of the hash to generate, in bytes.</param>
/// <returns>A hash of the password.</returns>
private static byte[] PBKDF2(string password, byte[] salt, int iterations, int outputBytes)
{
var pdb = new Pkcs5S2ParametersGenerator();
pdb.Init(PbeParametersGenerator.Pkcs5PasswordToBytes(password.ToCharArray()), salt,
iterations);
var key = (KeyParameter)pdb.GenerateDerivedMacParameters(outputBytes * 8);
return key.GetKey();
}
Мне нужно изменить это с SHA1 на SHA256.
Из документации Java и этот пост казалось, что возможно следующее, но в конструкторе нет перегрузки библиотека С#.
var pdb = new Pkcs5S2ParametersGenerator(new Sha256Derived());
Найдя другую статью о переполнении стека, я подумал, что возможно следующее, но алгоритмы хэширования SHA отсутствуют в списке поиска. , поэтому следующее не будет работать.
var bcparam = (KeyParameter)pdb.GenerateDerivedParameters("sha256", outputBytes * 8);
Что мне нужно сделать, чтобы заставить это работать, пожалуйста?
Примечание. Если вы читаете это и не знаете, как в Bouncy Castle, но знаете другой способ, я все равно буду признателен за вашу помощь.