Ganz im Gegensatz zu Random(), kann man aber RC4 so umbauen das er als Zufallsgenerator dient der sogar statistisch gesehen weit besser als Random() selber ist.
Delphi-Quellcode:
var
RC4Random: TRC4Context;
procedure RC4Seed(const Seed: String);
begin
RC4Init(RC4Random, Seed);
end;
function RC4Random: Cardinal;
type
TRC4Cast = record
FirstSBOX: Cradinal;
end;
begin
// verschlüssele die dynamsiche SBOX von RC4Random.D mit sich selber und gebe die 4 ersten Bytes
// als Zufallswert zurück !!
RC4Code(RC4Random, RC4Random.D, RC4Random.D, SizeOf(RC4Random.D));
Result := TRC4Cast(RC4Random).FirstSBOX;
end;
initialization
RC4Seed('');
finalization
end.
Da die SBOX 256 * 8 = 2048 Bit groß ist und die kryptographische Funktion vom RC4 eben deshalb so sicher ist weil man bewiesen hat das JEDE mögliche Kombination bei einem spezifischen Passwort exakt nach 2^2048 Bits sich erst wiederholt, können wir davon ausgehen das die maximale Periode dieser Zufallsfunktion 2^2048 Bits beträgt. Dabei stellt der Seed = Passwort nur den Index in diesen 2^2048 Bit Langen Bitstrom dar. Bei Random() wäre die maximale Period nur 2^32 Bits.
Gruß Hagen
PS: nun wird auch ersichtlich das RC4 eine 2048 Bit sichere Verschlüsselung darstellt, mehr geht nicht.