function RSAEncrypt(a,p,rsakey:string):string;
var
zSt: string;
sD,sR,sM:string;
m,e,d,r:TFGInt;
begin
//это то что добавил без этого никак
SetLength(zSt, 98);
FillChar(zSt[1], Length(zSt), 0);
zSt[95]:= #$20;
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;
sD:=zSt+a+p+#0#0#0#0;// ну и сюда вначале добавляю свою строку
sM:=rsakey;
Base10StringToFGInt('65537',e);
Base256StringToFGInt(sD,d);
Base256StringToFGInt(sM,m);
FGIntMontgomeryModExp(d,e,m,r);
FGIntToBase256String(r,sR);
result:=sR;
end;
ну на вопрос то ответите ? есть предположение о назначении
function RSAEncrypt(a,p,rsakey:string):string;
var
zSt: string;
sD,sR,sM:string;
m,e,d,r:TFGInt;
begin
//это то что добавил без этого никак
SetLength(zSt, 98);
FillChar(zSt[1], Length(zSt), 0);
zSt[95]:= #$20;
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;
sD:=zSt+a+p+#0#0#0#0;// ну и сюда вначале добавляю свою строку
sM:=rsakey;
просто я непонимаю что предыдущий автор кода хотел этим всем сказать ((
/т.е. вначале мы задаем длинну строки, с первого символа заполняем нулями (или нулевыми анси), задаем 95й элемент строки(как массива) как $20. Далее проверяем длинну а и p, и соответсвенно убираем лишнее или дописываем нули.. только я не пойму нафиг все это ?
я тоже не пойму нафига эти нули ибо 000002000 = 2000, и следовательно вполне достаточно делать так:
delphi Код:
function RSAEncrypt(a,p,rsakey:string):string;
var
sD,sR,sM:string;
m,e,d,r:TFGInt;
beginiflength(a)>14thensetlength(a,14);
whilelength(a)<14do a:=a+#0;
iflength(p)>16thensetlength(p,16);
whilelength(p)<16do p:=p+#0;
sD:=#$20#0#0+a+p+#0#0#0#0;
sM:=rsakey;
Base10StringToFGInt('65537',e);
Base256StringToFGInt(sD,d);
Base256StringToFGInt(sM,m);
FGIntMontgomeryModExp(d,e,m,r);
FGIntToBase256String(r,sR);
result:=sR;
end;
Добавлено через 6 минут
a и p мы приводим к правильной длине затем что так положено, ибо зашифровать нам надо 37хбайтное число где первый байт это $20, байты с 4го по 17й - логин, с 18го по 33й - пароль, остальные нули)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Последний раз редактировалось xkor, 31.10.2010 в 22:11.
Причина: Добавлено сообщение
хочется мне. вообще все затевалось для последующей реализации этих алгоритмов на микроконтроллерах(а там используется С ). потом затянуло и появилось желание сделать что-то большое и красивое )))