Hi,
ich bin gerade dabei das RSA-Verfahren zu programmieren:
Delphi-Quellcode:
unit mRSA;
interface
uses
Math;
type
TRSA =
class(TObject)
private
p, q: Integer;
phi, e: Extended;
function isPrime(x: Integer): Boolean;
function ggT(x, y: Extended): Extended;
function modulo(x, y: Extended): Extended;
public
n, d: Extended;
constructor create();
function crypt(x: Extended): Extended;
function encrypt(x: Extended): Extended;
destructor destroy();
end;
implementation
constructor TRSA.create();
var help: Integer;
begin
randomize;
repeat
help := random(46340);
until isPrime(help);
p := help;
repeat
repeat
help := random(46340);
until isPrime(help);
q := help;
until p <> q;
N := p*q;
phi := (p-1)*(q-1);
repeat
e := random*(N-1);
until (e > 1)
and ((ggT(e, N)) = 1);
repeat
d := random*N;
until modulo((e*d), phi) = 1;
p := 0;
q := 0;
phi := 0;
end;
function TRSA.isPrime(x: Integer): Boolean;
var i: Integer;
begin
result := true;
for i := 2
to (x - 1)
do begin
if x
mod i = 0
then result := false
end;
end;
function TRSA.ggT(x, y: Extended): Extended;
var help: Extended;
begin
if y > x
then begin
help := x;
x := y;
y := help;
end;
if y = 0
then result := x
else result := ggT(y, modulo(x, y));
end;
function TRSA.modulo(x, y: Extended): Extended;
begin
result := x;
while x >= y
do begin
x := x - y;
result := x;
end;
end;
function crypt(x: Extended): Extended;
begin
result := modulo(power(x, d), n);
end;
function encrypt(x: Extended): Extended;
begin
result := modulo(power(x, e), n);
end;
destructor destroy();
begin
n := 0;
d := 0;
e := 0;
inherited;
end;
end.
Beim kompilieren zeigt mir Delphi bei den Funktionen crypt und encrypt folgende Fehler an:
[Fehler] mRSA.pas(85): Undefinierter Bezeichner: 'modulo'
[Fehler] mRSA.pas(85): Undefinierter Bezeichner: 'd'
[Fehler] mRSA.pas(90): Undefinierter Bezeichner: 'modulo'
[Fehler] mRSA.pas(90): Undefinierter Bezeichner: 'e'
[Fehler] mRSA.pas(93): Undefinierter Bezeichner: 'destroy'
[Fehler] mRSA.pas(95): Undefinierter Bezeichner: 'n'
[Fehler] mRSA.pas(96): Undefinierter Bezeichner: 'd'
[Fehler] mRSA.pas(97): Undefinierter Bezeichner: 'e'
Vor diesen Zeilen hat er keine Probleme mit den Funktionen und Variablen...
Wodran liegt's?