id: Гость   вход   регистрация
текущее время 19:00 27/04/2024
Автор темы: Tim32, тема открыта 21/10/2010 17:29 Печать
Категории: криптография, алгоритмы, хэширование
создать
просмотр
ссылки

Вопрос по MD4

Здравствуйте. Я решил написать реализацию MD4 на Python. Пользуюсь псевдокодом с википедии, и кодом на С из RFC 1320.
MD4
RFC1320


Код питона очень прост и думаю в нем разберется любой програмист. Чем то похож на С++. Программа простая, но у меня почему то получается одинаковый хеш, но внутри проги все изменяется как надо. Может найдется человек, который знаком с MD4 или с MD5 (структура схожа) и подскажет в чем ошибка. Заранее спасибо, если что задавайте вопросы по теме. вот код:




 
Комментарии
— Гость (21/10/2010 18:22)   <#>
Самое простое – добавить вывод состояния после каждого раунда и сравнить с эталонной реализацией
— Гость (21/10/2010 19:38)   <#>
Читинг-Усложнёный.
— Гость (21/10/2010 20:11, исправлен 21/10/2010 21:10)   <#>

Ошибка в неправильной интерпретации комментариев из википедии:

/* Пусть [abcd k s] означает следующую операцию:
a = (a + F(b,c,d) + X[k]) <<< s. */

Это значит что вместо написанного:

A=round1(D,A,B,C,1,7,X)

нужно писать:

D=round1(D,A,B,C,1,7,X)

И так далее.

— Tim32 (22/10/2010 10:05)   профиль/связь   <#>
комментариев: 5   документов: 2   редакций: 0
Я уже понял. Спасибо за исходники (сам почему-то не допёр).
— Tim32 (22/10/2010 12:48)   профиль/связь   <#>
комментариев: 5   документов: 2   редакций: 0
Тогда еще вопрос. Написано в вики.

Результат (хеш-функция) получается как ABCD. То есть, мы выписываем 128 бит, начиная с младшего бита A, и заканчивая старшим битом D.

Все так и делаю, но вменяемый хеш не выходит..

Нормальный размер хеша 0x31d6cfe0d16ae931b73c59d7e0c089c0L
а у меня раз в 10 длиннее..
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3