Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#23

Re: BigInt: RandomRange Funktion?

  Alt 3. Sep 2008, 10:35
Zitat von Z4ppy:
Ich dachte eigentlich an Dezimalziffern Also str:=str+inttostr(RandomRange(0,9)); wobei die erste Ziffer keine 0 sein sollte...

MfG Z4ppy

PS.: KP, ob die Syntax da oben jetz stimmt, sollte aber scho richtig sein... Und den String kann man dann ja mit TBigInt.Create(str); umwandeln...
Dann wirst aus zwei Gründen aber viel Freude haben

1. Sind wir wieder beim Thema, daß RandomRange für kryptographische Anwendungen viel zu unsicher ist.

2. Wenn Du wirklich 20000-stellige Primzahlen mit der Methode erzeugen willst (das sind mehr als 66000 Bits, wenn "Stelle" wieder Dezimal bedeutet), wirst Du viel Zeit für andere Sachen haben. Versuch's erstmal mit 2048 Bits oder 1000 Dezimalstellen.

Auf jedenfall ist es besser mit den Arrayelementen zu arbeiten. Schau mal in das Testprogram der von Dir benutzten Klasse aus #1, dort wird genau das gemacht:

Delphi-Quellcode:
  p := TBigInt.Create(0);
  for i:=0 to CRYPTO_DIGITS do
    p.Digit[i] := random($FFFFFFFF);
  p.Digit[0] := p.Digit[0] or 1;
Jetzt brauchtst Du eigentlich nur noch random durch was kryptographisch Besseres zu ersetzen, zB mit dem ISAAC:

Delphi-Quellcode:
  p := TBigInt.Create(0);
  for i:=0 to CRYPTO_DIGITS do begin
    isaac_next(ctx);
    p.Digit[i] := LongWord(ctx.nextres);
  end;
  p.Digit[0] := p.Digit[0] or 1;
Gruß Gammatester
  Mit Zitat antworten Zitat