RSA/ECB/PKCS1Padding mit DECRYPT_MODE
Ich versuche zu entschlüsseln, die einen string mit dem öffentlichen Schlüssel vergleichen mit einem hash. Der code ist der folgende Merkmale aufweist
byte[] dectyptedText = null;
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
dectyptedText = cipher.doFinal(text);
return dectyptedText;
Der obige code erzeugt eine string (base64encode)
MCEwCQYFKw4DAhoFAAQUy3qkZYgfRVo2sv1f9bha3pds044=
Der hash wird erzeugt, indem Sie den folgenden code
byte[] key = stringToHash.getBytes();
MessageDigest md = MessageDigest.getInstance("SHA-1");
hash = md.digest(key);
Der obige code erzeugt eine Beispiel-hash wie folgt
y3qkZYgfRVo2Sv1F9bHa3pDs044=
Wenn Sie bemerken, hat nicht die korrekte hash ist y3qkZYgfRVo2Sv1F9bHa3pDs044=
Aber das entschlüsseln von Codes erzeugt und fügt eine zusätzliche MCEwCQYFKw4DAhoFAAQU
Verstehe nicht, wie diese zusätzliche Sache, die Hinzugefügt wird und warum.
Kann bitte jemand werfen etwas Licht auf das ?
Dank
prem
InformationsquelleAutor Prem Nair | 2013-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nicht verwenden
Cipher
zu erstellen oder überprüfen von Signaturen. Stattdessen sollten Sie verwendenSignature.getInstance("SHA1withRSA")
.Signatur-Schemata und Verschlüsselung Systeme sind Verschieden, und Sie sind nicht unbedingt miteinander kompatibel. Für den Anfang, verwenden Sie verschiedene padding-Methoden, und diese Polsterung Methoden sind Teil der Sicherheit des Algorithmus.
Sogar, wenn Sie die Signatur-Verifizierung, um die Arbeit mit der Ziffer, die Chancen sind, dass Sie noch nicht verifiziert die Signatur in vollem Umfang, und Ihre home-brewed Verifizierung der Signatur-Schema kann (und vielleicht wird) schlägt fehl, wenn eine andere Implementierung von
Cipher
verwendet wird.Den obigen code sieht aus wie PKCS#1 v1.5 Polsterung für die Verschlüsselung, so ist es wahrscheinlich nicht korrekt.
es bekam. Dank owlstead. dies war eine nicht-standard-Signatur-Abschnitt. Ich werde versuchen, zu standardisieren Sie mit Signature-Klasse.
InformationsquelleAutor Maarten Bodewes
Dass die PKCS1-Polsterung.
Der Algorithmus verwendet den pkcs-padding zu Ihrem Klartext-Daten (D. H. Ihrer hash), um zu verhindern, dass einige Attacken, basierend auf wiederholten verschlüsselt nur-text-Daten. Es ist ein Weg, um mischen Sie die input-Daten. Wenn Sie erneut zu verschlüsseln, die sehr gleichen hash mit dem gleichen Schlüssel erhalten Sie andere pkcs-header-Daten (und eine andere cypher block natürlich). Offensichtlich ist die pkcs-padding und hat eine Feste Länge, so dass Sie können entfernen Sie es, auf Ihr original reinen text.
ok, du bist willkommen... bitte ein +1! 🙂 🙂 🙂
ich habe versucht, aber es scheint, ich brauche einen Ruf von 15+ zu machen 🙁 ...ich werde es tun, sobald ich das
ok... kein problem
Schöne Erklärung....
InformationsquelleAutor Gianluca Ghettini