2017-03-10 4 views
0

Ich implementiere meine eigene Version von RSA-OAEP mit SHA-256. Ich möchte es testen, indem ich es mit der Ausgabe der Cipher-Klasse in Java unter Verwendung von RSA-OAEP und SHA-256 vergleiche. Laut PKCS # 1 benötigt RSA-OAEP eine Bezeichnung, die standardmäßig eine leere Zeichenfolge ist. Ich kann jedoch keine Möglichkeit finden, ein Label in der integrierten Klasse einzugeben. Meine Implementierung scheint sowohl für die Verschlüsselung als auch für die Entschlüsselung korrekt zu funktionieren, aber die Cipher-Klasse erzeugt unterschiedliche Ausgaben. Gibt es ein Standard-Label, das die Cipher-Klasse verwendet?Gibt es eine Standardkennzeichnung für die integrierte RSA-OAEP-Verschlüsselung in Java?

Antwort

2

Was heißt label L in PKCS1v2.1 RSAES-OAEP wurde Codierungsparameter P in v2.0 genannt; Siehe die Beschreibung von pSourceAlgorithm in A.2.1. Die Java-API behält die alte Terminologie bei, vermutlich aus Gründen der Kompatibilität, und der Standard ist tatsächlich eine leere Oktett-Zeichenkette, die in Java als byte Array der Länge 0 implementiert ist. Siehe . Beachten Sie, dass selbst wenn P-Call-Me-L leer ist, sein Hash, der in DB vor der Maskierung geht, nicht leer ist.

Wenn Sie "unterschiedliche Ausgabe" sagen, stellen Sie fest, dass OAEP randomisiert ist (in einer Weise, die nachweislich keine Informationen an den Gegner verliert) und jede Verschlüsselung desselben Klartexts sollte einen eindeutigen Chiffretext ergeben, aber alle sollte zurück zum selben Klartext entschlüsseln, oder?

Verwandte Themen