RSA-Verschlüsseln in PHP zu entschlüsseln, in .NET
In PHP bin ich RSA-Verschlüsselung einer Nachricht wieder entschlüsselt werden .NET-Anwendung... aber ich bekomme immer wieder eine "Bad-Taste" - Ausnahme aus .NET....
Für die RSA-Verschlüsselung, bin ich mit PEAR Klasse Crypt_RSA-> Verschlüsselung mit dem öffentlichen Schlüssel (das ist ein modulus, exponent-pair-Mädchen), die ich von der Arbeit Verschlüsselungs-system .NET...
Denke ich mal die einfachste Frage wäre-> keine "Bad-Taste" bedeutet, dass er nicht in der Lage, die Nachricht zu entschlüsseln überhaupt? DH, es ist nicht verschlüsselt, richtig?
Die schwierigere Frage ist-> gibt es etwas bestimmtes über die RSA-Verschlüsselung, die Ursachen Macken zwischen .NET und PHP?
- Könnte es ein problem mit dem Schlüssel selbst? Seltsame Zeichen, problem zwischen UNICODE und UTF-8?
- Sie könnten mit verschiedenen Polstern.
- RE: Padding: Ist die über die Zeichenfolge selbst? In diesem Fall ist es genau 32 bytes, die durch 8 teilbar... so habe ich das abgedeckt?
- Problem mit Schlüssel? Gute Frage... ich vermute, der Schlüssel ist in Ordnung. Der gleiche Schlüssel wird zum entschlüsseln von Nachrichten über das backend der .NET-Anwendung (ich bin einfach zu versuchen, Sie zu replizieren, die backend-version in PHP). Backend-system funktioniert gut. Und nur um sicherzugehen, ich bin nicht völlig ahnungslos dort-> einen öffentlichen RSA-Schlüssel ist nur ein modulus und exponent verwendet wird, die durch die RSA-Klasse zum verschlüsseln der Nachricht, richtig? Ich habe gesehen, einige Verweise auf Zertifikate, die ich bin nicht mit, wie ich annahm, alles, was ich brauchte, war der öffentliche Schlüssel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, verwenden Sie eine Lösung, die nicht erforderlich ist, die openssl-extension, versuchen phpseclib ist Crypt_RSA. Beispiele:
Entschlüsselung mit PKCS#1 padding:
openssl rsautl -inkey privatekey.txt -verschlüsseln -in plaintext.txt -aus ciphertext.txt
- Verschlüsselung, PKCS#1 padding:
openssl rsautl -inkey privatekey.txt -entschlüsseln -in ciphertext.txt -aus plaintext.txt
Entschlüsselung mit OAEP padding:
openssl rsautl -inkey privatekey.txt -verschlüsseln -oaep -in plaintext.txt -aus ciphertext.txt
Verschlüsselung mit OAEP padding:
openssl rsautl -inkey privatekey.txt -entschlüsseln -oaep -in ciphertext.txt -aus plaintext.txt
phpseclib heruntergeladen werden kann http://phpseclib.sourceforge.net/
Glück!
Den Crypt_RSA auf BIRNE ist nicht mit PKCS#1-Kodierung. Ich vermute, dass ist der Grund, warum .NET ist, geben Sie eine Fehlermeldung.
Als ein Beispiel dafür, es zu brechen, habe ich ein php-Skript mit Crypt_RSA zum verschlüsseln der Zeichenfolge "1234567" (ich springe mit den wichtigsten be):
Nehmen der Ausgang des und Rohrleitungen durch das openssl command line tool gibt die folgende Fehlermeldung:
openssl erwartet PKCS#1 padding standardmäßig, aber das hinzufügen der -rohe (keine Polsterung) Flagge von openssl nicht helfen, entweder.
Mithilfe der openssl-Erweiterung in php gibt die richtige Polsterung (Standard PKCS#1, andere auf Anfrage):
- Und entschlüsseln von code in php:
Zertifikate im Rahmen des RSA werden X. 509-Zertifikate, die den RSA-Schlüssel sowie Daten über diese Tasten. X. 509-Zertifikate verwendet werden, die in SSL, aber nicht erforderlich für die Verwendung mit RSA.