![]() |
Fehler bei function (c=m^e mod N)
Hallo,
ich habe eine funktion geschrieben die mir folgenden ausdruck ausrechnen soll: c=m^e mod N so hier erstmal die funktion:
Delphi-Quellcode:
ich erhalte nun folgenden fehler:
[...]
var e,m:integer; [...] function verschluesseln(q:integer;s:integer):integer; begin result:=m^e; mod q*s; end; [Error] Programm.pas(87): Pointer type required [Fatal Error] Project5.dpr(5): Could not compile used unit 'Programm.pas' kann mir einer sagen was ich da verändern muss ? denn mit der meldung kann ich irgendwie nich besonders viel anfangen. |
Re: Fehler bei function (c=m^e mod N)
|
Re: Fehler bei function (c=m^e mod N)
danke erstmal :) hab jetzt so gemacht :
Delphi-Quellcode:
nur das problem ist jetzt das ich mit Power(m,e) ja einen extended Wert habe. ich schätz es wird jetzt schwierig diesen wert in einen integer umzuwandeln, denn bei der rsa verschlüsselung sind werte die bei power(m,e) eingesetzt werden schon mal zahlen wie power(133,151). weiß jemand wie ich das problem lösen kann ?function Power(Basis,Exponent:Extended):extended; begin result := exp(Exponent*ln(Basis)) end; function verschluesseln(m:integer):integer; begin n:=q*s; result:=Power(m,e) mod n; end; |
Re: Fehler bei function (c=m^e mod N)
kann man nicht vielleicht irgendeine langzahlen bibliothek oder sowas implementieren ?
weil mit zahlen wie 291^151 sollte der computer durch irgendwie eine modulo rechnung durch- führen können ?? mit meinem TI Voyage 200 geht das sogar :shock: Zitat:
könnte man sowas auch in delphi umsetzten ? |
Re: Fehler bei function (c=m^e mod N)
eine gute Bibliothek mit Routinen für grosse Ganzzahlen suche ich auch schon lange, bisher ohne Erfolg :roll: Deswegen versuche ich gerade eine für mich zu programmieren, ich hänge aber bei der Multiplikation fest... naja.
Für die Potenzierung gibt es im binären einen sehr schnellen und nicht allzu schwer zu implementierenden Algorithmus, den kannst du in der Wiki nachlesen: ![]() mfg Matthias |
Re: Fehler bei function (c=m^e mod N)
Zitat:
![]() ![]() |
Re: Fehler bei function (c=m^e mod N)
hm, Danke Schön.
In der Tat kannte ich diese Bibliothek noch nicht, sie sollte für Mb123 eigentlich sehr gut brauchbar sein. Die sieht sehr schön und übersichtlich aus. Für mein Problem hilft sie mir leider nicht. Ich versuche den Schönhage-Strassen-Algorithmus zur schnellen Multiplikation von Binärzahlen zu realisieren, vom Prinzip her habe ich das auch schon. Meine Implementierungen sind aber nicht praktikabel, weil ich noch viel zu viel Speicherplatz während der Multiplikation brauche und dementsprechend auch langsam bin. In der Library ist der Algorithmus implementiert, aber ich bräuchte den Source-Code um mal zu gucken, wie Hagen das Platzproblem gelöst hat... naja, dafür habe ich meinen eigenen Fred (seltsamerweise in Numerik/Optimierung...wieso ich den gerade da reingestellt habe weiss ich nicht mehr so sicher :lol: ), das gehört hier gar nicht her. Danke nochmal für den Link! mfg Matthias |
Re: Fehler bei function (c=m^e mod N)
Hmm, darf ich mal fragen, was du für Zahlen multiplizieren möchtest?
Der Schönhage-Strassen-Algo taugt nur was für wirklich extrem große Zahlen. Bei "normalen" Zahlen braucht er wegen den DFTs sogar länger als der normale Schulalgo. Zitat:
|
Re: Fehler bei function (c=m^e mod N)
Ach Jungs...
Warum wollen so viele einen RSA-Algorithmus implementieren, wenn sie denn absolut keine Ahnung von den mathematischen Grundlagen der modulo-Rechnung haben? Das Thema hatten wir schon ein paar Mal, letztens in ![]() Greetz alcaeus |
Re: Fehler bei function (c=m^e mod N)
@ hsg: ich möchte Zahlen mit bis zu 2^27 Bit multiplizieren können, wenn man mit Mersennezahlen rumspielt kommen solche Grössenordnungen raus. Selbst Karazuba (oder Karatsuba) ist da viel zu langsam. Im Moment müsste der Wiki-Satz übrigens lauten: 'Gerade bei modernen Computern ...' den von steigender Registergrösse (wie momentan von 32 auf 64 Bit) profitiert die Karazuba-Methode stärker als der SchönStrAlg (der profitiert stärker von einer Takterhöhung als die K_Methode)
mfg Matthias |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 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