Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Erweiterter Euklidischer Algorithmus (https://www.delphipraxis.net/11845-erweiterter-euklidischer-algorithmus.html)

Meisterschmied 14. Nov 2003 19:24


Erweiterter Euklidischer Algorithmus
 
Noch mal Abend an alle!

Es geht mir wie immer um RSA, diesmal um den Erweiterten Euklidischen Algorithmus. Wie kann ich die normale Variante

Delphi-Quellcode:
procedure TForm1.AdvancedGcd(a, b : integer);
var
  x1, xtmp, y1, ytmp, r, t, q : integer;
begin
  // Erweiterter Euklidischer Algorithmus
  x0 := 1; x1 := 0;
  y0 := 0; y1 := 1;
  t := 1;

  while b <> 0 do
    begin
      r := a mod b;
      q := a div b;
      a := b;
      b := r;
      xtmp := x1;
      ytmp := y1;
      x1 := q*x1 + x0;
      y1 := q*y1 + y0;
      x0 := xtmp;
      y0 := ytmp;
      t := -t;
    end;

    x0 := t*x0;
    y0 := -t*y0;

end;
so umschreiben, dass ich zum Beispiel bei den Werten a=3 und b=220 nicht die Resultate x0 := -73 und y0 = 1 bekomme, die ich beim RSA-Verfahren nicht gebrauchen kann, sondern die Werte x0 = 147 und y0 = -2?

Ich persönlich hab nicht mal einen Ansatz? Schon mal besten Dank :dance: :spin:

Thanks,

Meisterschmied

mirage228 14. Nov 2003 19:40

Re: Erweiterter Euklidischer Algorithmus
 
x0 * (-2) + 1
y0 * (-2)

?

mfG
mirage228

Meisterschmied 14. Nov 2003 19:46

Re: Erweiterter Euklidischer Algorithmus
 
Glaubst du, dass das allgemein anwendbar ist? Oder war das geraten?

Meisterschmied

mirage228 14. Nov 2003 21:58

Re: Erweiterter Euklidischer Algorithmus
 
ich hab einfach mal nachgedacht wie ich von dem x,y der funktion auf deine x,y komme...

mfG
mirage228

negaH 23. Nov 2003 20:55

Re: Erweiterter Euklidischer Algorithmus
 
Code:
 b = 220
x0 = -73
--------
x0 = 147
:) -73 mod 220 = 147 !

Dein Algorithmus arbeitet also korrekt.

Achso, jetzt müssen wir noch den Unterschied von mod zu rem erklären.

mod sollte nach der Reduktion eigentlich immer Zahlen liefern mit dem Vorzeichen des Modulis, mathematisch gesehen.
rem sollte so arbeiten wie es mod in Delphi macht. D.h. rem liefert das Vorzeichen der zu reduzierenden Zahl.

D.h. mathematisch gesehen arbeitet der mod Operator in Delphi falsch und müsste korrekter weise rem heissen.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr.

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