Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2009, 14:57   #1
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию Различие MD5 Delphi и MD5 PHP

Проблема в том что хэш дельфийских модулей не совпадает с тем что возвращает PHP

1)26A5B64D95447269BED200360DB0F0B2
2)628c781eae084f1aa24f895f476d8072
3)55d98fb1516429b4956ee1ad12b79e98

Это хэш одной строки. Первые 2 это от тех модулей что я цеплял к Delphi, третий создан php.

А получать надо результат идентичный PHP. Все это нужно для онлайн генератора ключей.

Delphi 2009.
Вложения
Тип файла: zip umd5(1).zip (1.5 Кб, 103 просмотров)
Тип файла: zip Umd5(2).zip (2.7 Кб, 194 просмотров)
Viteef вне форума Ответить с цитированием
Старый 07.05.2009, 20:05   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

НЕ ПОДТВЕРЖДАЮ!!!!

я не знаю, что и как Вы там мутите.
Но, например,
для строчки '1234567890' (без кавычек)
MD5 получается:
Код:
e807f1fcf82d132f9bb018ca6738a19f
или (что то же самое)
E807F1FCF82D132F9BB018CA6738A19F
проверено консольной утилитой.

Обе подпрограммы выдают ИДЕНТИЧНЫЙ MD5 hash
(проверял в Delphi5)
и из umd5(1).zip
Edit1.Text := MD5('1234567890');
и из umd5(2).zip
Edit2.Text := MD5DigestToStr( MD5String('1234567890'));
p.s. umd5(2).zip выдаёт в верхнем регистре...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2009, 20:26   #3
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

1.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var S:string;
begin
s:='100';
edit1.Text:=md5(s);
end;
для строки 100 результат 62518aa5a9a4cd21eb54b93bc1ec351f (проект и exe в аттаче)

2.
PHP код:
<?
echo md5($_GET['s']);
?>
Результат - f899139df5e1059396431415e770c6dd
http://incyberteam.ru/md5.php?s=100
Вложения
Тип файла: zip md5.zip (197.2 Кб, 131 просмотров)
Viteef вне форума Ответить с цитированием
Старый 07.05.2009, 22:40   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

у меня всё в порядке
проект и EXEшник прикладываю...

подозреваю, что это Дельфи2009 выпендрюкивается
(насколько мне известно, 2009 версия первая с полной поддержкой unicode. возможно, это и приводит к искажениям ;( )

на другую версию (младше) Дельфи есть возможность перейти?

Добавлено
Ваш exe-шник работал действительно так, как Вы описали.
перекомпилировал ваш проект (только меня смутило вот в program Project1; вот это

Код:
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  umd5 in '..\umd5.pas';
у себя поправил.
и, если у Вас umd5 лежит в вышележащем каталоге, то значит всё нормально...
После перекомпиляции всё заработало...
Вложения
Тип файла: rar md5_project.rar (138.9 Кб, 189 просмотров)

Последний раз редактировалось Serge_Bliznykov; 07.05.2009 в 22:57.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2009, 22:49   #5
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Цитата:
на другую версию (младше) Дельфи есть возможность перейти?
Увы...

Цитата:
подозреваю, что это Дельфи2009 выпендрюкивается
(насколько мне известно, 2009 версия первая с полной поддержкой unicode. возможно, это и приводит к искажениям ;( )
Эта версия подтврждается здесь. Спасибо. В принципе все понятно, буду искать.

Последний раз редактировалось Viteef; 07.05.2009 в 22:53.
Viteef вне форума Ответить с цитированием
Старый 07.05.2009, 23:01   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так.
вопрос — у Вас это сильно "горит" ? срочность большая? Я бы мог на праздники поковыряться...

и второе. я практически уверен, что в Delphi 2009 либо есть директива компилятора, которая указывает считать строки String обычными, не unicode,
либо банально заменить string на AnsiString (надеюсь, что AnsiString не стала уникодной!)

удачи.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2009, 23:14   #7
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Именно так string -> AnsiString.

Прикрепляю поправленный umd5.pas для Delphi 2009
Вложения
Тип файла: zip umd5_for_Delphi_2009.zip (1.5 Кб, 193 просмотров)
Viteef вне форума Ответить с цитированием
Старый 07.05.2009, 23:20   #8
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

да, umd5.pas у меня на уровень выше
Viteef вне форума Ответить с цитированием
Старый 07.05.2009, 23:59   #9
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Тем не менее один из модулей подклюкивал на длинных строках
Viteef вне форума Ответить с цитированием
Старый 08.05.2009, 00:29   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Тем не менее один из модулей подклюкивал на длинных строках
Точно!! подверждаю. то же самое!
Причём, глючит тот, который umd5(1).zip (MD5(...) )
второй, который MD5DigestToStr( MD5String(..) работает корректно!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчет md5 Noor Компоненты Delphi 8 18.11.2009 08:22
MD5 в Delphi LeoN Общие вопросы Delphi 7 23.09.2009 12:25
Считаем md5 сумму файла DeniCPP Общие вопросы C/C++ 6 04.04.2009 23:31
Убить процесс, md5, архивация Igoressicus Помощь студентам 1 16.01.2009 10:37
Ипользование md5 шифрования в C? fis Общие вопросы C/C++ 1 06.06.2008 16:58