Эххх... не могу зашифровать лог пасс. Устал уже... Сделал из этой функции дллку подключил FGint, все скомпилилось. При вызове функции RSAEncrypt
получаю ошибку. Дальше сделал в делфи тестовую программу, что-бы посмотреть как работает функция. Тут вообще не пойми что... Прописал прям внутри функции "от балды" лог пасс и ключ 128 символов (rsakey:string), вывел результат на форму - то работает, то нет. Стоит поменять пару символов в ключе (при том же размере) - все крит эррор.
Я в замешательстве. Есть где-нибудь другие сорцы RSA/ECB/NoPadding? Или готовые библиотеки. посоветуйте что-нибудь.
Вот сорц длл:
Код:
library Project1;
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FGint;
function RSAEncrypt(aa,pp,rsakey:PChar):integer;
var
sD,sR,sM:string;
m,e,d,r:TFGInt;
a,p:string;
begin
a:=string(aa);
p:=string(pp);
if length(a)>14 then setlength(a,14);
while length(a)<14 do a:=a+#0;
if length(p)>16 then setlength(p,16);
while length(p)<16 do p:=p+#0;
for i:=0 to 13 do
sD:=a+p+#0#0#0#0;
sM:=string(rsakey);
Base10StringToFGInt('65537',e);
Base256StringToFGInt(sD,d);
Base256StringToFGInt(sM,m);
FGIntMontgomeryModExp(d,e,m,r); //тут ловлю крит...
FGIntToBase256String(r,sR);
//rsakey:=PChar(sR);
//result:=PChar(sR);
end;
exports RSAEncrypt;
begin
end.