Форумы » Форум для внеигровых тем » Высокоинтеллектуальная тема
Cообщение
#380  ahawk
1
+29
13 Мар 2009
Сразу скажу, дело сУрьёзное, понимаю, хотя сегодня тяпница и всё такое, но всё-таки:
есть такая вещь как курсач, в нём есть пункт: "ручной пример шифрования" (типо по алгоритму ручками на бумажке просчитать), ну так вот, нужно прогнать вручную Хеш-функцию MD5. Алгоритм есть, но не совсем понятный, точнее некоторые вещи не очень понятны, может кто поможет (объяснит, делать за меня не нужно, сам сделаю, нужно пару советов), если что можно и по аське.

Сразу первый вопрос:
предполагаем что кодируемый текст - abc (в латинской раскладке), тогда как это нужно отобразить в бинарке - слева старший бит каждой буквы или младший, для примера как "а" записать так: 01100001 или так 10000110?
#333  Akelon
2
+4
13 Мар 2009
ой.. не сЮда заглянул,ухожу тихо закрываю дверь.Вы тут интелегентно ругаетесь..
3
+7
13 Мар 2009
01100001 - будет так, точно тебе говорю! А abc не иначе как: 011000010110001001100011
Скрывать не буду, это не я догадалась..... - переводи все, что тебе надо тут: http://nickciske.com/tools/binary.php

Да, я захотела, и нашла это;) Удачи
4
+1
13 Мар 2009
Плюс. Тока ниче не понял. Мне легче прокатный цех спроектировать%)
5
0
13 Мар 2009
старший бит слева
6
0
13 Мар 2009
+5 1 - 00000001, 2 - 00000010, 3 -00000011 итд
#380  ahawk
7
0
13 Мар 2009
спасибо! с этим определились. Теперь хуже:
----------
64 битное представление длины входного потока (длины потока до выравнивания) добавляется к результату предыдущего шага. Если длина потока превосходит 2^64, то добавляются младшие 64 бит. Эти биты добавляются как 2 32-битных слова, младшее слово добавляется первым.
----------
в примере получается:
длина входного потока - 11000
как её добавлять, каким словом младшим или старшим?
т.е.: 000.....00011000 (всего 64 бита) или 00...0011000 (32 бита) и потом ещё 32 нуля.
8
0
14 Мар 2009
1 По старшим/младшим битам - это особенность процессоров интел. LE (little-endian) используются для задания значений кратностью 8,16,32,64 байт.У тебя же 'abc' - это plain-text - поэтому ничего вертеть не надо ))7. Из википедии "В оставшиеся 64 бита дописывают 64-битное представление длины данных до выравнивания. Если длина превосходит 264 − 1, то дописывают только младшие биты. После этого длина потока станет кратной степеням двойки — 16, 32. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит."Т.е. ты всегда дописываешь 64 бита, но если у тебя значение длины входящего потока не входит в 64 бита, то дописываются только младшие биты значения длинны потока (я так понимаю)
#380  ahawk
9
0
14 Мар 2009
понимаешь правильно, но в RFC 1321 (описание алгоритма) даётся ещё про 2 32-битных слова в вики этого нет, но вроде с этим тоже разобрались. Остальное завтра ;)
#380  ahawk
10
0
15 Мар 2009
всем спасибо, разобрался, теперь сижу и считаю :))) ещё дня на 2-3...
Тема закрыта ahawk