Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi BigInt: RandomRange Funktion? (https://www.delphipraxis.net/119784-bigint-randomrange-funktion.html)

gammatester 3. Sep 2008 08:09

Re: BigInt: RandomRange Funktion?
 
Zitat:

Zitat von Z4ppy
Hmm, mir is grad noch ne ganz einfache methode eingefallen :D
Man generiert quasi einfach einen Zufallsstring aus Ziffern... Man muss die Zufallszahl natürlich in einer Variable zwischenspeichern, um sicher zu gehen, dass die Zahl mit Zufügen der Ziffer net grösser wird, als R... Am Schluss kann man den String ja dann einfach in nen BigInt umwandeln...

Werde das morgen mal testen, müsste aber eigentlich funktionieren...

MfG Z4ppy

Wenn Du Ziffern durch Bits ersetzt, ist es doch genau das, was ich seit Tagen sage. Ziffern ist hier ein etwas unklares Konzept: Sind es Binärziffern, Dezimalziffern oder die Cardinals/Longword des bigint arrays? Wenn Du die Bits oder Arrayteile meinst, ist es wiederum genau das, was ich in #14 geschrieben habe (hier werden die Bits in einem Rutsch erzeugt und in das bigint-Array geschrieben):
Zitat:

Welche Funktionen Du verwenden kannst, hängt von den biginst ab. Wenn's ein array of cardinal ist, etwa isaac_read(ctx, @DeinArray, length(DeinArray)*sizeof(cardinal))
Gammatester

Z4ppy 3. Sep 2008 09:46

Re: BigInt: RandomRange Funktion?
 
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...

gammatester 3. Sep 2008 10:35

Re: BigInt: RandomRange Funktion?
 
Zitat:

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 :wink:

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

Z4ppy 3. Sep 2008 11:17

Re: BigInt: RandomRange Funktion?
 
Ich glaub, du hast mich net verstanden ;) Ich HABE Primzahlen bis 20k Stellen und will nun eine beliebige (natürliche) Zahl mit 1<x<p erzeugen, wobei p die 20k-stellige Zahl ist. Ich rede hier übrigens immer von Dezimalstellen...

Das mitm ISAAC werd ich mir nachher nochma ansehen ;)

MfG Z4ppy


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz