MD5 на FreePascal

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Tamachi
новенький
Сообщения: 10
Зарегистрирован: 01.10.2007 14:31:38

MD5 на FreePascal

Сообщение Tamachi »

Как написать md5-кодирование на FreePascal?
Аватара пользователя
Deepthroat
постоялец
Сообщения: 144
Зарегистрирован: 06.09.2007 00:21:34
Откуда: Outer Heaven
Контактная информация:

Сообщение Deepthroat »

По-моему, уже все написано. Разве в комплекте не идет модуль md5? Если не идет, то должен подойти модуль от Delphi.
Tamachi
новенький
Сообщения: 10
Зарегистрирован: 01.10.2007 14:31:38

Сообщение Tamachi »

Ты знаешь где конкретно оно есть в FPC/Delphi?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

fpc\source\base\hash\md5.pp
Yurakl
новенький
Сообщения: 62
Зарегистрирован: 20.01.2010 07:59:53

Сообщение Yurakl »

При написании реализации MD5 не может найти библиотеку lbc. где ее можно взять, подскажите пожалуйста?

Добавлено спустя 1 минуту 9 секунд:
пишу прогу в лазарусе под линуксом
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Странно. Модуль md5.pp не использует не какие функции из libc.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

В смысле при написании реализации? Она уже вроде реализована.
Использовал в линуксе по лазарем. Никаких библиотек не требовала
Yurakl
новенький
Сообщения: 62
Зарегистрирован: 20.01.2010 07:59:53

Сообщение Yurakl »

а как тогда при помощи этого модуля можно закодировать строку не подскажите???
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

Код: Выделить всё

 uses ..., md5, LCLProc;

function Get_md5hash(aStr: UTF8String): ansistring;
var
  a: TMDDigest;
  i: integer;
begin
  Result := '';
  a      := MD5String(aStr);
  for i := Low(a) to High(a) do
    Result := Result + IntToHex(a[i], 1);
end;
.....
var
  s: AnsiString;
begin
.......
  s := Get_md5hash('test');
.....
end;
 
Последний раз редактировалось Padre_Mortius 07.04.2010 15:24:47, всего редактировалось 1 раз.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Для перевода хэша в печатный вид есть ф-ция mdprint().
Yurakl
новенький
Сообщения: 62
Зарегистрирован: 20.01.2010 07:59:53

Сообщение Yurakl »

а вот эта функция

Код: Выделить всё

  s := ConvertPass(aPwd); 

она откуда берется???

Добавлено спустя 2 минуты 11 секунд:
Sergei I. Gorelkin
спасибо при помощи этой функции все выводится, однако получаются разные результаты при кодировке под виндой и под линуксом. почему?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

поправил. не изменил после копирования из проекта
Yurakl
новенький
Сообщения: 62
Зарегистрирован: 20.01.2010 07:59:53

Сообщение Yurakl »

Результаты все равно разные.
В windows в delphi я использовал вот такую функцию

Код: Выделить всё

function md5(s: string): string;
begin
  Result := '';
  with TIdHashMessageDigest5.Create do
  try
    Result := AnsiLowerCase(AsHex(HashValue(s)));
  finally
    Free;
  end;
end;
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Я пользуюсь данной функцией (конкретно MD5Print(MD5String(...))) и ни какой разницы не заметил.

Добавлено спустя 58 секунд:
Более того данная реализация совместима с MD5 хешами реализованными в других ПО.
Yurakl
новенький
Сообщения: 62
Зарегистрирован: 20.01.2010 07:59:53

Сообщение Yurakl »

исправил, мой косяк был
Спасибо за помощь:)
Ответить