вторник, 17 сентября 2013 г.

Delphi XE4 and MD5 hash howto

Пару дней назад возник вопрос написать небольшое приложение под Win32. Решил заодно глянуть, куда ушёл прогресс разработки :) Будучи старым любителем Delphi копал именно в этом направлении. Уличил так и замечательную компанию Embarcadero, которая, вероятно будет портить кровь будущим и нынешним разработчикам :)

Незамедлительно слил себе Embarcadero Delphi XE4 (here) Firemonkey
... - сорри, по ссылке уже 5-й релиз (всё за ваши бабки)
Удивился, `да, нет, не знаю`.. - Страшное лингвистическое сочетание для америкосов и европейцев, как я слышал..

С одной стороны нет, я не удивился: масса нового, присутствует некая вертикаль развития, в частности мультиплатформенность. Об этом можно было только мечтать лет так 5-10 назад ;)
Реализация как всегда где-то далеко от остины.. К моему глубокому сожалению, это уже давно принято считать как правило в отношении всего и всех..

Сорри за лирику, но я начал писать небольшой проект Firemonkey и столкнулся с массой неприятностей, о которых, видимо, нужно писать скорпулёзно в формате отчётов, однако сейчас опишу первую проблему, с которой я столкнулся - это md5 hash ... При чём таким образом, что в PHP я получаю одно значение хеша, в Delphi другое.. Долго думал, предположил, что это из-за перехода Delphi на UTF. Не сильно логичное объяснение, но факт проблемы остался.

Так как информации в сети по FMX очень мало (мягко сказно), буду постить свои типичные беды и их решения тут, в надежде, что это кому-то поможет. Попробуем сделать это через TIdHashMessageDigest..

Итак MD5 Delphi XE4 FireMonkey:
====================================================
Uses           IdHashMessageDigest;
procedure TForm1.Button1Click(Sender: TObject);
 var
md5indy: TIdHashMessageDigest;
hashpw: string;
begin
md5indy:=TIdHashMessageDigest5.Create;
hashpw:=lowercase(md5indy.HashStringAsHex('your-string'));
end;
===================================================
hashpw - в этом случае реальный MD5 hash, который совпадает с хешированием, скажем в PHP, MySQL ...


Комментариев нет: