Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.09.12;
Скачать: CL | DM;

Вниз

Шифрование на 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
2-1276668024
DROWSY
2010-06-16 10:00
2010.09.12
Access violation at address 00356273 in module designide60.bpl .


15-1273957893
NailMan
2010-05-16 01:11
2010.09.12
Свершилось чудо Маниту


4-1239432348
ZZtop24
2009-04-11 10:45
2010.09.12
Как обойти виндовский микшер


2-1276611901
john-s
2010-06-15 18:25
2010.09.12
Не читает данные из файла


2-1276380946
AKE
2010-06-13 02:15
2010.09.12
Принадлежит ли точка треугольнику?