procedure CryptBMP(BMP: TBitmap; PW: string);
var
x, z, erg, w, h: integer;
p: pByteArray;
s: string;
begin
s := '';
erg := 7;
for z := 2 to 9 do begin
for x := 1 to length(PW) do
erg := (erg * 2 + ord(PW[x]) * z) mod 73;
s := s + inttostr(erg mod 10)
end;
randseed := strtoint(s);
BMP.pixelformat := pf24bit;
for h := 0 to BMP.height - 1 do begin
P := BMP.ScanLine[h];
for w := 0 to BMP.width * 3 - 1 do
P[w] := P[w] xor Random(256);
end;
end;
// erster Aufruf verschlüsseln, zweiter Aufruf entschlüsseln
procedure TForm1.Button1Click(Sender: TObject);
begin
CryptBMP(Image1.Picture.Bitmap, 'Passwort');
Image1.Refresh;
end;