ahawk |
Сразу скажу, дело сУрьёзное, понимаю, хотя сегодня тяпница и всё такое, но всё-таки:
есть такая вещь как курсач, в нём есть пункт: "ручной пример шифрования" (типо по алгоритму ручками на бумажке просчитать), ну так вот, нужно прогнать вручную Хеш-функцию MD5. Алгоритм есть, но не совсем понятный, точнее некоторые вещи не очень понятны, может кто поможет (объяснит, делать за меня не нужно, сам сделаю, нужно пару советов), если что можно и по аське.
Сразу первый вопрос:
предполагаем что кодируемый текст - abc (в латинской раскладке), тогда как это нужно отобразить в бинарке - слева старший бит каждой буквы или младший, для примера как "а" записать так: 01100001 или так 10000110?
|
Akelon |
ой.. не сЮда заглянул,ухожу тихо закрываю дверь.Вы тут интелегентно ругаетесь..
|
Kopilka03 |
01100001 - будет так, точно тебе говорю! А abc не иначе как: 011000010110001001100011
Скрывать не буду, это не я догадалась..... - переводи все, что тебе надо тут: http://nickciske.com/tools/binary.php
Да, я захотела, и нашла это;) Удачи
|
Пьяный дровосек |
Плюс. Тока ниче не понял. Мне легче прокатный цех спроектировать%)
|
Kostya77 |
старший бит слева
|
Kostya77 |
+5 1 - 00000001, 2 - 00000010, 3 -00000011 итд
|
ahawk |
спасибо! с этим определились. Теперь хуже:
----------
64 битное представление длины входного потока (длины потока до выравнивания) добавляется к результату предыдущего шага. Если длина потока превосходит 2^64, то добавляются младшие 64 бит. Эти биты добавляются как 2 32-битных слова, младшее слово добавляется первым.
----------
в примере получается:
длина входного потока - 11000
как её добавлять, каким словом младшим или старшим?
т.е.: 000.....00011000 (всего 64 бита) или 00...0011000 (32 бита) и потом ещё 32 нуля.
|
El Capitano |
1 По старшим/младшим битам - это особенность процессоров интел. LE (little-endian) используются для задания значений кратностью 8,16,32,64 байт.У тебя же 'abc' - это plain-text - поэтому ничего вертеть не надо ))7. Из википедии "В оставшиеся 64 бита дописывают 64-битное представление длины данных до выравнивания. Если длина превосходит 264 − 1, то дописывают только младшие биты. После этого длина потока станет кратной степеням двойки — 16, 32. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит."Т.е. ты всегда дописываешь 64 бита, но если у тебя значение длины входящего потока не входит в 64 бита, то дописываются только младшие биты значения длинны потока (я так понимаю)
|
ahawk |
понимаешь правильно, но в RFC 1321 (описание алгоритма) даётся ещё про 2 32-битных слова в вики этого нет, но вроде с этим тоже разобрались. Остальное завтра ;)
|
ahawk |
всем спасибо, разобрался, теперь сижу и считаю :))) ещё дня на 2-3...
|
Тема закрыта ahawk |