MD5 на C++
Хочу написать на Си++ реализацию 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 unsigned 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)?
Спасибо.
комментариев: 13 документов: 0 редакций: 1
Рекомендую использовать все-таки sha256 – он дефакто стандарт сейчас для хешей. Да и реализаций его в интернете полно на всех языках программирования.
Если в учебных целях – то советую посмотреть Trivium. Он как-то поинтереснее и поперспективнее, хоть и не хеш-функция, но как алгоритм очень интересный.
А вот его реализация http://www.ecrypt.eu.org/strea.....submissions/trivium/