AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein RSA Signatur unter PHP - Verify in Delphi

RSA Signatur unter PHP - Verify in Delphi

Ein Thema von jziersch · begonnen am 8. Sep 2020 · letzter Beitrag vom 8. Sep 2020
Antwort Antwort
jziersch

Registriert seit: 9. Okt 2003
Ort: München
214 Beiträge
 
Delphi 10.4 Sydney
 
#1

RSA Signatur unter PHP - Verify in Delphi

  Alt 8. Sep 2020, 07:24
Hallo,

eigentlich sollte dies ganz einfach sein ....

in PHP benutze ich openssl um ein public/privat key paar zu erstellen

Code:
$config = array(
         "digest_alg" => "SHA256",
         "private_key_bits" => 2048,
         "private_key_type" => OPENSSL_KEYTYPE_RSA,
     );
   
$res = openssl_pkey_new($config);
openssl_pkey_export($res, $privKey);
Und erstelle nun eine Signatur aus meinen Daten:
openssl_sign($data, $signatur, $privKey, "sha256" );

In Delphi möchte ich nun die Signatur mit dem öffentlichen Schlüssel prüfen. In PHP geht das ganz einfach:

Code:
$pubKey = openssl_pkey_get_details($res);
$pubKey = $pubKey["key"];
$ok = openssl_verify($data, $signatur, $pubKey, "sha256" );
Ich habe leider keine Delphi Anbindung an openssl gefunden die verify (oder alternativ public_decrypt) unterstützt. (private_decrypt wird u.a.hier unterstützt)

Also habe ich TMSCrypt lizensiert. Dort wird als Eingabe Parameter aber modulus/PublicExponent erwartet. Und hier komme ich nicht weiter, nicht mit RSAEncSign1.FromOpenSSLPublicKey und auch nicht durch Eintragen der Werte die ich mit PHP so ermittelt habe. Verify gibt immer -316 zurück.

Code:
$all=openssl_pkey_get_details( $res );
$rsa = $all["rsa"];
echo 'Modulus='.base64_encode ($rsa["n"]).'<br>';
echo 'Exponent='.base64_encode ($rsa["e"]).'<br>';
Hat jemand die Lösung?

Julian
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
214 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: RSA Signatur unter PHP - Verify in Delphi

  Alt 8. Sep 2020, 07:29
Fehler gefunden

es funktioniert!

Falls jemand dies auch machen will, hier der code zur Konvertierung

// Convert OpenSLL to TMSCrypt
RSAEncSign1.outputFormat := base64;
RSAEncSign1.withOpenSSL := true;
RSAEncSign1.FromOpenSSLPublicKey( '.....PEM' );
PublicExponentStr := RSAEncSign1.PublicExponent;
modulusStr := RSAEncSign1.modulus;

Um den Key für die Zukunft zu speichern verwendet man in PHP
openssl_pkey_export_to_file($res, "../../name.pem", "password", $config );

Das laden get dann so
$newPrivKey = openssl_pkey_get_private( "file://../../name.pem", "password" );
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF

Geändert von jziersch ( 8. Sep 2020 um 08:28 Uhr) Grund: laden von key hinzugefügt
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf