Entwickler-Ecke

Sonstiges (Delphi) - MPArith delphi xe4


herr-master - So 29.09.13 18:53
Titel: MPArith delphi xe4
Ich hoffe das hier ist der richtige bereich für dieses theme könnte der entwickler von MPArith es für delphi xe4 anpassen.
Und warum bekomme ich bei mp_mul(mp_p,mp_q,ergebnis);
12 * 13 = 144 ????
12 * 13 ist 156 oder kann ich nicht mehr rechnen.

Delphi-Quelltext
1:
2:
mp_rsaep(m,e,n,c);
edit4.text:=mp_adecimal(m);

Bekomme ich das hier zu sehen s_mp_read_radix:invalid number synatx zu sehen.
so sieht der ganse code aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  c, n, e,m: mp_int;
begin
 mp_init4(c,n,e,m);
 mp_read_decimal_str(e,edit1.text);
 mp_read_decimal_str(n,edit2.text);
 mp_rsaep(m,e,n,c);//rsa encrypt??
 mp_read_decimal_str(c,edit3.text);
 edit4.text:=mp_adecimal(m);


Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt


Mathematiker - So 29.09.13 19:25

Hallo,
user profile iconherr-master hat folgendes geschrieben Zum zitierten Posting springen:
könnte der entwickler von MPArith es für delphi xe4 anpassen.

Woran anpassen? MPArith funktioniert tadellos.
user profile iconherr-master hat folgendes geschrieben Zum zitierten Posting springen:
Und warum bekomme ich bei mp_mul(mp_p,mp_q,ergebnis);
12 * 13 = 144 ????
12 * 13 ist 156 oder kann ich nicht mehr rechnen.

Ohne Quelltext kann man nicht viel sagen. Da MPArith fehlerfrei arbeitet, d.h. 12*13 richtig rechnet, nun ja, ...
user profile iconherr-master hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  c, n, e,m: mp_int;
begin
 mp_init4(c,n,e,m);
 mp_read_decimal_str(e,edit1.text);
 mp_read_decimal_str(n,edit2.text);
 mp_rsaep(m,e,n,c);//rsa encrypt??
 mp_read_decimal_str(c,edit3.text);
 edit4.text:=mp_adecimal(m);

Nach der Beschreibung von

Quelltext
1:
2:
  procedure mp_rsaep(const m, e, n: mp_int; var c: mp_int);
  {-Basic RSA encryption operation, c=m^e mod n.}

ist c das Ergebnis der Operation. Nach Deinem Quelltext hast Du zwar m initialisiert, aber diesem keinen Wert zugewiesen. Außerdem verwirrt mich mp_read_decimal_str(c,edit3.text). c ist das Ergebnis, warum erhält c den Wert von edit3?
Etwas mehr Quelltext wäre für eine Fehlersuche hilfreich.

Beste Grüße
Mathematiker


herr-master - So 29.09.13 19:48

Allso wenn ich mparith so verwende in delphi xe4 bekomme ich diese meldung:
[dcc32 Fehler] mp_rc16.pas(242): E2107 Operandengröße stimmt nicht überein allso scheint es ja nicht in delphi xe4 einwandfrei zu functioniren.
So sieht bei mir das mp_mul aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
mp_p, mp_q, ergebnis:mp_int;
begin
mp_init3(mp_p, mp_q, ergebnis);
mp_read_decimal_str(mp_p, Edit1.Text);
mp_read_decimal_str(mp_q, Edit2.Text);
mp_mul(mp_p, mp_q, ergebnis);
Edit3.Text:=mp_adecimal(ergebnis);


Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt


Mathematiker - So 29.09.13 20:15

Hallo,

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var mp_p, mp_q, ergebnis:mp_int;
begin
   mp_init3(mp_p, mp_q, ergebnis);
   mp_read_decimal_str(mp_p, edit1.text);
   mp_read_decimal_str(mp_q, edit2.text);
   mp_mul(mp_p, mp_q, ergebnis);
   edit3.text:=mp_adecimal(ergebnis);
   mp_clear3(mp_p, mp_q, ergebnis);
end;

funktioniert problemlos. Für 12 und 13 ergibt sich korrekt 156.
user profile iconherr-master hat folgendes geschrieben Zum zitierten Posting springen:
Allso wenn ich mparith so verwende in delphi xe4 bekomme ich diese meldung:
[dcc32 Fehler] mp_rc16.pas(242): E2107 Operandengröße stimmt nicht überein

Verstehe ich nicht. Bei mir gibt's es keine Fehlermeldung.
An Zeile 242 steht

Quelltext
1:
    mov ax,offset @@table                    

Kommt bei Dir an dieser Stelle der Fehler?

Beste Grüße
Mathematiker


herr-master - So 29.09.13 20:26

ja genau an der stelle kommt der fehler.
hab es mal so gelöst

Delphi-Quelltext
1:
mov esi,offset @@table                    


jaenicke - So 29.09.13 20:56

Dass die Zeile etwas vollkommen anderes macht, ist dir aber klar, oder? :shock:

Wenn, dann wohl eher so:

Delphi-Quelltext
1:
mov eax,offset @@table                    
(ohne den Zusammenhang zu kennen)


herr-master - So 29.09.13 21:04

wenn ich das benutze

Delphi-Quelltext
1:
mov eax,offset @@table                    

kommt bei 12 * 13 = 144 raus
Sorry mein fehler hatte noch db mit dd ersetzt darum kam 144 raus.

Mal noch eine frage am rande

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
mp_init4(c,n,e,m);
 mp_read_decimal_str(e,edit1.text);
 mp_read_decimal_str(n,edit2.text);
 mp_rsaep(m,e,n,c);//rsa encrypt??
 mp_read_decimal_str(m,edit3.text);
 edit4.text:=mp_adecimal(c);

selbst wenn ich das benutze functioniert es nicht.
E=65537(10er)
n=123457171127564473956360536343713050577(128bits)
Bei fgint ist es ja so

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
FGintRSA.RSAEncrypt
    (
    StringEdt.Text,
    Private_Exp,
    Modulus_N,
    EncryptedString
    );

Warum muss ich bei mparith so viele sachen benutzen für ein rsa encrypt?