Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
MD5 на Си++, Помогите реализовать MD5 на Си++
 
Хочу написать на Си++ реализацию MD5, пишу в C++Builder.
Я нашел откуда скачать реализованный алгоритм, но там не очень понятно, поэтому решил писать сам по алгоритму с википедии(http://ru.wikipedia.org/wiki/MD5).
Первый шаг реализовал так:
Код
String GetHash(String in)
{
int length=in.Length(); //Длина входящего сообщения.
int rests=length%64; //остаток от деления на 64байта(512бит).
int size=0; //размер расширенного сообщения.

 if(rests<56) //если остатот от деления меньше 56
 {
 size=length-rests+56+8; //подгоняем длину сообщения, что бы была кратна 64(+8байт для шага 2)
 }
else //иначе
 {
 size=length+64-rests+56+8; //подгоняем длину сообщения, что бы была кратна 64(+8байт для шага 2)
 }

unsigned char *inChar=new char[size]; //массив char, в котором будет храниться входящее сообщение с расширенной длиной.

for(int i=0;i<length;i++) //от 0 символа до length
 {
 inChar[i]=in[i+1]; //заполняем первые length символов inChar символами из входщей строки
 }

inChar[length]=128; //добавляем 1 бит в конец потока(128(Dec)=0x80(HEX)=1000000(Bin))

for(int i=length+1;i<size;i++) //оставшуюся часть
 {
 inChar[i]=0; //заполняем нулями
 }


Вот это моя реализация первого шага в соответствии с алгоритмом с википедии.

Расскажите пожалуйста, что тут не так(если что-то не так) и поясните, что от меня требуют во втором шаге(а то я не очень пониммаю). И что такое массив X (в шаге 3)?


Спасибо.
Страницы: 1
Читают тему