Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Potenzieren ohne Power-Funktion (https://www.delphipraxis.net/178834-potenzieren-ohne-power-funktion.html)

Faffy 30. Jan 2014 14:27

Potenzieren ohne Power-Funktion
 
Hey Leute,

wir machen gerade eine RSA-Verschlüsselung & dafür benötige ich natürlich folgende Foreml zur Berechnung der Verschlüsselung:

Delphi-Quellcode:
C := V mod(N);
Dabei ist C die Verschlüsselung, V der zu verschlüsselnde Text hoch den öffentlichen Schlüssel & N das Produkt aus den beiden Primzahlen (P & Q).

Mein Problem dabei ist, dass ich die Potenz
Delphi-Quellcode:
V := X^E;
nicht mit
Delphi-Quellcode:
V := Power(X, E);
rechnen darf, da V nicht Extended sein darf. Denn ist V Extended, so lässt sich V nicht mit
Delphi-Quellcode:
mod(N)
berechnen.

(E ist der öffentliche Schlüssel & X der zu verschlüsselnde Text).

Hoffe ihr könnt mir helfen.

Gruß
Faffy

gammatester 30. Jan 2014 14:35

AW: Potenzieren ohne Power-Funktion
 
In einem solchen Fall benutzt man die http://de.wikipedia.org/wiki/Bin%C3%A4re_Exponentiation, wobei bei jedem Produkt mod N reduziert wird, siehe meine Funktion hier http://www.delphipraxis.net/780375-post23.html

Gruß Gammatester

himitsu 30. Jan 2014 14:40

AW: Potenzieren ohne Power-Funktion
 
Man kann das Extended doch auch wieder zu einem Integer runde (Round) oder abschneiden (Trunc).

Zur hälft hilft dir IntPower.

Aber wenn es sonst nicht geht, dann .... Wie hattest du das Potenzieren denn mal in der Schule gelernt?
Das kannst du ja nachmachen. (am Billigsten mit einer Schleife und * )

gammatester 30. Jan 2014 14:58

AW: Potenzieren ohne Power-Funktion
 
Zitat:

Zitat von himitsu (Beitrag 1245993)
Man kann das Extended doch auch wieder zu einem Integer runde (Round) oder abschneiden (Trunc).

Zur hälft hilft dir IntPower.

Das bringt doch alles nix weil zB selbst 12345^5678 ~ 0.3065E23232 nicht in ein extended passt, aber 12345^5678 mod (997*101) = 25102 einfach zu berechnen ist. Es hilf nichts: nach jedem Schritt mod N bilden! Wenn N kleiner Maxint=2^31-1 kann man mit int64 rechnen:
Delphi-Quellcode:
int64(a)*int64(b) mod N

himitsu 30. Jan 2014 15:33

AW: Potenzieren ohne Power-Funktion
 
Er hatte ja nicht verraten, wie groß seine Werte sind und ob die nicht doch rein passen.
Aber mit aktiver Überlaufprüfung, wäre es dann schon aufgefallen. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 Uhr.

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