Нашла код для хеширования/расхеширования паролей на c#. Реализовала хеширование на c#, но расхешировать необходимо в python django. Но не могу понять, как переделать код расхеширования под python, т.к. не сильно в этом разбираюсь. Может кто-нибудь знает и поможет мне)) Мне очень нужно для диплома, несколько дней уже сижу над этим, никаких изменений. Буду очень благодарна за помощь
private static byte[] GenerateHashValue(string password, byte[] salt, int iterationCount)
{
using (var pbkdf2 = new Rfc2898DeriveBytes(password, salt, iterationCount))
{
return pbkdf2.GetBytes(DERIVED_KEY_LENGTH);
}
}
public static bool VerifyPassword(string passwordGuess, string passwordHash)
{
//ingredient #1: password salt byte array
var salt = new byte[SALT_LENGTH];
//ingredient #2: byte array of password
var actualPasswordByteArr = new byte[DERIVED_KEY_LENGTH];
//convert actualSavedHashResults to byte array
byte[] actualSavedHashResultsBtyeArr = Convert.FromBase64String(passwordHash);
//ingredient #3: iteration count
int iterationCountLength = actualSavedHashResultsBtyeArr.Length - (salt.Length + actualPasswordByteArr.Length);
byte[] iterationCountByteArr = new byte[iterationCountLength];
Buffer.BlockCopy(actualSavedHashResultsBtyeArr, 0, salt, 0, SALT_LENGTH);
Buffer.BlockCopy(actualSavedHashResultsBtyeArr, SALT_LENGTH, actualPasswordByteArr, 0, actualPasswordByteArr.Length);
Buffer.BlockCopy(actualSavedHashResultsBtyeArr, (salt.Length + actualPasswordByteArr.Length), iterationCountByteArr, 0, iterationCountLength);
byte[] passwordGuessByteArr = GenerateHashValue(passwordGuess, salt, BitConverter.ToInt32(iterationCountByteArr, 0));
return ConstantTimeComparison(passwordGuessByteArr, actualPasswordByteArr);
}
private static bool ConstantTimeComparison(byte[] passwordGuess, byte[] actualPassword)
{
uint difference = (uint) passwordGuess.Length ^ (uint) actualPassword.Length;
for (var i = 0; i < passwordGuess.Length && i < actualPassword.Length; i++)
{
difference |= (uint)(passwordGuess[i] ^ actualPassword[i]);
}
return difference == 0;
}
Нет, не помогло. Думаю, необходимо именно эти три функции сравнения
реализовать на питоне, т.к. на шарпе я реализовала хеширование своё, а это продолжение (сравнение паролей). Всё равно спасибо вам за документацию
Там получается хеширование в шарпе, а сравнение в питоне. Поэтому мне и нужно было вот эти функции сравнения переписать на питон, но видимо это просто не возможно(