Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизАлгоритм RSA Найти похожие ветки
← →
Сергей Бушин (2004-04-30 05:24) [0]Люди где найти нормальные исходники алгортима RSA для Delphi? Нужны именно исходники, а не компоненты на основе PGP или еще чего нибудь.
← →
Dimaxx © (2004-04-30 22:02) [1]Он вроде патентован/копирайтовый и ты не можешь просто так его использовать. Исходники должны быть в инете, но я не находил.
← →
Goida © (2004-05-02 02:42) [2]На вот тебе исходник. Кажется RSA. Мне не жалко.
function Find_D(e,N: int64): int64;
var
i,ed: int64;
begin
Result := 0;
i := 1;
repeat
ed := N*i+1;
Result := ed div e;
i:=i+1;
until ((e*Result)mod N) = 1
end;
function ExpMod(x,p,n: int64): int64;
var
Res: int64;
begin
if p = 0
then begin
Result := 1;
exit
end;
if (p mod 2) = 0
then begin
Res := expmod(x, p div 2, n);
Result := (Res*Res) mod n;
exit
end;
Result := (x*expmod(x, p-1, n)) mod n;
end;
procedure TfmLab5.CodeExecute(Sender: TObject);
var
fCode: file;
i,n: integer;
da,db,c: integer;
begin
n:=1;//первый файл
if CodedFName = ""
then if SaveDialog1.Execute
then
CodedFName := SaveDialog1.FileName
else
exit;
//составим первый файл
insert("_"+inttostr(n),CodedFName,length(CodedFName)-3);
if fmInputNum.ShowModal <> mrOK
then
exit;
assignfile(fCode,CodedFName);
rewrite(fCode,1);
for i := 1 to length(Memo1.Lines.Text) do
begin
c:=expmod(ord(Memo1.Lines.Text[i]),uInputNum.EA,uInputNum.P*uInputNum.Q);
blockwrite(fCode,c,sizeof(c))
end;
closefile(fCode);
Application.ProcessMessages;
//теперь составим второй файл
n := n+1;
delete(CodedFName,length(CodedFname)-5,2);
insert("_"+inttostr(n),CodedFName,length(CodedFName)-3);
assignfile(fCode,CodedFName);
rewrite(fCode,1);
for i := 1 to length(Memo1.Lines.Text) do
begin
c := expmod(ord(Memo1.Lines.Text[i]),uInputNum.EA,uInputNum.P*uInputNum.Q);
c := expmod(c,uInputNum.EB,uInputNum.P*uInputNum.Q);
blockwrite(fCode,c,sizeof(c))
end;
closefile(fCode);
Application.ProcessMessages;
//3-й файл
n := n+1;
delete(CodedFName,length(CodedFname)-5,2);
insert("_"+inttostr(n),CodedFName,length(CodedFName)-3);
da := Find_D(uInputNum.EA,(uInputNum.P-1)*(uInputNum.Q-1));
assignfile(fCode,CodedFName);
rewrite(fCode,1);
for i := 1 to length(Memo1.Lines.Text) do
begin
c := expmod(ord(Memo1.Lines.Text[i]),uInputNum.EA,uInputNum.P*uInputNum.Q);
c := expmod(c,uInputNum.EB,uInputNum.P*uInputNum.Q);
c := expmod(c,da,uInputNum.P*uInputNum.Q);
blockwrite(fCode,c,sizeof(c))
end;
closefile(fCode);
Application.ProcessMessages;
//4-й файл
n := n+1;
delete(CodedFName,length(CodedFname)-5,2);
insert("_"+inttostr(n),CodedFName,length(CodedFName)-3);
db := Find_D(uInputNum.EB,(uInputNum.P-1)*(uInputNum.Q-1));
assignfile(fCode,CodedFName);
rewrite(fCode,1);
for i := 1 to length(Memo1.Lines.Text) do
begin
c := expmod(ord(Memo1.Lines.Text[i]),uInputNum.EA,uInputNum.P*uInputNum.Q);
c := expmod(c,uInputNum.EB,uInputNum.P*uInputNum.Q);
c := expmod(c,da,uInputNum.P*uInputNum.Q);
c := expmod(c,db,uInputNum.P*uInputNum.Q);
blockwrite(fCode,c,1)//записываем один байт, т.к. должна быть буква
end;
closefile(fCode);
Application.ProcessMessages;
Application.MessageBox("Encryption complited!","Coding...",MB_OK+MB_ICONINFORMATION)
end;
← →
DDA © (2004-05-02 15:14) [3]Ищи библеотеку FGint
Хотя она вот здесь
http://triade.studentenweb.org
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c