Форум: "Прочее";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];
ВнизШифрование на Delphi и PHP Найти похожие ветки
← →
George (2010-06-13 14:26) [0]Шифрование на Delphi и PHP
Встала тут у меня задача сделать зашифровать строку в дельфи, передать ее PHP скрипту, который расшифрует и произведет определенные манипуляции. Так вот попробовал использовать алгоритм AES, вот только, как я понял, он по разному работает в зависимости от длины ключа, хотя какая разница? Проблема в том, что сам я не реализовываю шифрование ибо долго и не умею, а скачал для дельфи компоненты DCP Crypt, а для PHP класс нашел. Но они как то по разному работают. Это плохо ибо противоречит задаче. Порылся в исходниках этих дельфовых компонентов DCP Crypt, они после шифрования делают еще и Base64Encode. Короче говоря:const RijndaelKey = "8BC82381BB364896898991966607D2F1";
...
ShowMessage(GetCryptedStr("1", RijndaelKey)); </code.
В результате этого кода получаю: 2w==$key = "8BC82381BB364896898991966607D2F1";
echo base64_encode(encrypt_str("1", $key));
А здесь: mL5wqOgamDd64dkJPytwyA==
Итак, вопроса два:
1. Может ли кто-то проверить, какой срабатывает криво - PHP или Delphi?
2. Есть ли у кого-то проверенные и работающие решения, когда можно шифровать на Delphi и расшифровывать на PHP (и наоборот)? Сам алгоритм побоку, лишь бы было реализовано и работало.
← →
George (2010-06-13 14:37) [1]Прошу прощения, с тэгами накосячил :)
← →
test © (2010-06-13 15:28) [2]Если алгоритм правильно реализован, то на чем он запускается без разницы.
← →
test © (2010-06-13 15:31) [3]ИМХО
Base64 вообще предназначен для передачи бинарной информации через XML, ты перекодированную часть в Base64 код перекодируешь, а в Дельфи нет.
← →
George (2010-06-13 15:45) [4]
> test © (13.06.10 15:28) [2]
Дык это понятно. Я ж не сам реализовывал а просто готовое взял. Поэтому мне и интересно, где косяк. Если дело с Base64, то судя по результату вполне похоже на то, что оно используется.
Наилучшим вариантом было бы наличие у кого нибудь уже работающей и проверенной пары компонентов или классов.
← →
test © (2010-06-13 15:53) [5]В варианте с Дельфи нет, во всяком случае в том коде что в теме, нету преобразования к Base64.
http://www.google.ru/codesearch?hl=ru&lr=&q=toBase64+lang%3Apascal&sbtn=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA
← →
George (2010-06-13 16:24) [6]
> в том коде что в теме, нету преобразования к Base64.
Дык там Base64Encode встроено в глубинах компонента, т.е. в коде его не видно, но покопавшись в исходниках оно там было. По крайней мере мне так показалось. :))
А без него ведь кракозябры были бы, не?
← →
palva © (2010-06-13 21:57) [7]AES в чистом виде зашифровывает блок с фиксированным количеством битов, а не строку. Надо выяснять, какие дополнительные преобразования выполняются при зашифровке строки. Здесь может быть много разных вариантов, в том числе и самодельных. Вряд ли эта дополнительная обработка совпадет в Delphi и PHP. Можно использовать готовые программы зашифровки/рассшифровки БЛОКА, проверить их на совпадение в разных системах, а уже потом приделать к ним дополнительную обработку, реализовав ее самому.
← →
George (2010-06-13 22:40) [8]
> palva © (13.06.10 21:57) [7]
Да, я так думаю, Вы правы. :) Правда анализировать чужие реализации мне очень не хотелось, я решил погуглить и нагуглил вот что:
http://seofork.ru/rsa-delphi-cryptoapi-php-openssl/
Хочу завтра попробовать.
← →
Дмитрий Т (2010-06-14 00:25) [9]2Автор
А чем непосредственно на апач передаете данные? Компоненты какие? Или свое?
Это поверх HTTP или полностью свой протокол?
← →
Омлет © (2010-06-14 07:51) [10]ssl только для иностранцев?
← →
palva © (2010-06-14 08:26) [11]
> George (13.06.10 22:40) [8]
А зачем вам асимметричная криптография? Вы хорошо представляете, что вам нужно?
← →
George (2010-06-14 09:07) [12]
> Дмитрий Т (14.06.10 00:25) [9]
Да тупо строку передаю через POST.
> palva © (14.06.10 08:26) [11]
Ну по идее зашифровать передаваемые данныые надо.
← →
Дмитрий Т (2010-06-15 00:30) [13]
> George (14.06.10 09:07) [12]
>
>
> > Дмитрий Т (14.06.10 00:25) [9]
>
> Да тупо строку передаю через POST.
Т.е. через HTTP.
А какой компонент используется?
Инди или сам через сокеты делаешь?
← →
George (2010-06-15 07:22) [14]
> Дмитрий Т (15.06.10 00:30) [13]
Инди, ага - TIdHTTP.
← →
TRIx (2010-06-15 08:25) [15]сделай обычный base64 + замена символов A на Б, а то зачем тебе геморой.
← →
palva © (2010-06-15 12:01) [16]
> TRIx (15.06.10 08:25) [15]
Как раз делать он и не хочет, зачем ему геморой.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c