|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
RSA в Delphi без использования CryptoAPI
Необходимо в написанной на Delphi программе расшифровать данные, созданные примерно таким PHP скриптом (шифрование RSA):
PHP код:
Пробовал FGIntRSA (ключи здесь другие, но это не суть важно): Код:
procedure TForm1.Button1Click(Sender: TObject); var n, d: TFGInt; s:String; begin Base10StringToFGInt('67401359173339782011194938778692639955063938432046750146042650627000811678529',n); Base10StringToFGInt('36292881332193838097457286640543274354269423398959669692730220735295395665845',d); s:=Memo1.Text; RSAEncrypt(s, d, n, s); s:=EncodeBase64(s); //ConvertBase256to64(s,s); Memo1.Text:=s; end; procedure TForm1.Button2Click(Sender: TObject); var n, e, nilgInt: TFGInt; s:String; begin Base10StringToFGInt('67401359173339782011194938778692639955063938432046750146042650627000811678529',n); Base10StringToFGInt('10001',e); FGIntDestroy(nilGInt); s:=Memo1.Text; s:=DecodeBase64(s); //ConvertBase64to256(s,s); RSADecrypt(s, e, n, Nilgint, Nilgint, Nilgint, Nilgint, s); Memo1.Text:=s; end; Числа для ключей генерил через RSA Tool. На каком-то форуме читал, что в FGIntRSA к данным добавляется строка '111', из за нее расхождение со стандартами, только я пока не понял, как ее убрать и сохранить работоспособность модуля. Также пробовал компоненты tplockbox. Там аналогичная шняга - если генерировать E, N и D средствами самого модуля все работает (генерил ключи утилитой из примеров для этого компонента), но на такие числа RSA Tool матерится (не выполняется условие для E). При использовании чисел из RSA Tool дебет с кредитом снова не сходится, скрестить PHP и сэтим компонентом навряд ли получится. |