Я новичок в C #, здесь, в моем проекте веб-API, у меня есть код для хеширования пароля пользователя с использованием SHA3.
В API у меня есть 2 метода
Первый метод используется, когда новый пользователь создает учетную запись, я просто хеширую пароль и сохраняю его в таблице.
Второй метод предназначен для повторного входа того же пользователя в систему. Я получаю хешированный пароль (строку) и проверяю текущий пароль с его помощью.
Здесь я столкнулся с ошибкой, как я упоминал в названии, и я сослался на некоторые связанные посты в SO, но я не смог решить эту проблему.
Я проверил, что сохраненная и извлеченная строка имеет те же символы, а сгенерированная и сохраненная строка имеет те же символы.
Я не знаю, где я допустил ошибки.
Password : Abcd@123
Hashed String : k/OMmdnW6FZ+zsOrE2rkdy8YEUH/rep5dlcRIwnG8Vc7kQ81VL8dEQv2Clyp7iRhb0HSfKtgOLBj5g/YbqHq7FKDj5epafNwasE=
Вызов метода подтверждения
bool isPasswordPassed = false;
if (mHashedPassword != " " && mUserPassword != " ")
{
isPasswordPassed = Hashing.Confirm(mUserPassword, mHashedPassword, Supported_HA.SHA512);
}
Подтверждение
public static bool Confirm(string plainText, string hashValue, Supported_HA hash)
{
byte[] hashBytes = Convert.FromBase64String(hashValue);//This line passing the error as in my title.
......
.......
.....
}
Но все работает нормально, когда я проверяю код следующим образом ...
check(mUserPassword){
string a = Hashing.ComputeHash(mUserPassword, Supported_HA.SHA512, null);
bool b = Hashing.Confirm(mUserPassword, a, Supported_HA.SHA512);
}
Здесь я передаю пароль для генерации хэша и подтверждающий хеш, но он возвращает TRUE
Может кто-нибудь помочь мне решить эту проблему.
Ссылка: https://www.youtube.com/watch?v=0dgTf9TUDHU