РЕДАКТИРОВАТЬ: Извините, я забыл упомянуть, я не использую реализованный криптой sha512, потому что, насколько я могу судить, это не требует соли или определенного числа раундов для вычисленияхеш с.
Хорошо, я кодирую крипту sha-512 в c # и следую инструкциям, найденным здесь ...
http://people.redhat.com/drepper/SHA-crypt.txt
Этоя впервые делаю что-то связанное с шифрованием, поэтому я хочу убедиться, что я правильно понимаю шаги ... Я недостаточно хорошо понимаю код на c, чтобы перевести с c на c #: /
У меня естьПредполагается, что завершение дайджеста аналогично вычислению хеша.В этом случае я также предположил, что когда шаги относятся к завершенному дайджесту, они ссылаются на вычисленный хеш, а не на вычисленные до хеша байты дайджеста.Поправьте меня, если я ошибаюсь, пожалуйста!
Предполагая, что все было сделано правильно для шагов 1-8, мои сомнения начинаются с шага 9
9.Для каждого блока из 32 или 64 байтов в строке пароля (исключая завершающий NUL в представлении C), добавьте дайджест B для дайджеста A
Поскольку я использую SHA-512, у меня есть блокразмеры 64 байта.
Будет ли следующий код давать желаемый результат?
//FYI, temp = digestA from steps 1-3 (before expanding digestA for step 9)
//alt_result = computed digestB hash (64 byte hash)
for (cnt = key.Length; cnt > 64; cnt -= 64) //9
{
int i = 0;
ctx.TransformBlock(alt_result, 0, 64, digestA, temp.Length + 64 * i);
i++;
}
Если кто-то может уточнить, что то, что я сказал, правильно, я был бы признателен.Спасибо!