Ich implementiere Verschlüsselungscode in Java/Android, um iOS-Verschlüsselung zu entsprechen. In iOS gibt es Verschlüsselung mit RSA mit dem folgenden Padding-Schema: PKCS1-OAEPWird RSA PKCS1-OAEP-Padding in Bouncycastle unterstützt?
Allerdings, wenn ich versuche, Cipher mit PKCS1-OAEP zu erstellen.
Cipher c = Cipher.getInstance("RSA/None/PKCS1-OAEP", "BC");
Unten ist die stacktrace
javax.crypto.NoSuchPaddingException: PKCS1-OAEP unavailable with RSA.
at com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi.engineSetPadding(CipherSpi.java:240)
at javax.crypto.Cipher.getCipher(Cipher.java:324)
at javax.crypto.Cipher.getInstance(Cipher.java:237)
Vielleicht RSA/None/PKCS1-OAEP
ist falsch? Sie können jedoch keine definitive Antwort finden, um zu sagen, dass entweder PKCS1-OAEP nicht unterstützt wird oder die richtige Art, es zu definieren.
Ich benutze die Spongycastle-Bibliothek, also habe volle Bouncycastle-Implementierung.
Ohne genauer ist es schwer zu sagen, aber es könnte so etwas wie 'RSA/Kein/OAEPWithSHA1AndMGF1Padding', zum Beispiel. – vcsjones
@vcsjones Ich sehe, dass auf der folgenden http://www.bouncycastle.org/wiki/display/JA1/FrequentlyAssled+Questions notiert, aber während dies über die NoSuchPaddingException hinausgeht, ist es nicht die gleiche Auffüllung wie 'PKCS1- OAEP ". Welches zusätzliche Detail würde helfen? – scottyab
OAEP verwendet * irgendeine * Art von Hash-Funktion, ob es sich um SHA1 oder etwas anderes handelt, hängt von der Implementierung ab. Wir müssen mehr über Ihre iOS-Implementierung wissen. Wenn Sie beispielsweise 'RSA_PKCS1_OAEP_PADDING' in Ihrer RSA_public_encrypt-Funktion verwendet haben, ist dies SHA1 mit MGF1. http://developer.apple.com/library/ios/#documentation/System/Conceptual/ManPages_iPhoneOS/man3/RSA_public_encrypt.3ssl.html. Wie sieht dein iOS-Code aus? – vcsjones