Wprowadzam kod szyfrowania w języku Java/Android, aby dopasować szyfrowanie iOS. W systemie iOS szyfrowanie za pomocą protokołu RSA odbywa się za pomocą następującego schematu dopełnienia: PKCS1-OAEPCzy padding RSA PKCS1-OAEP jest obsługiwany w bouncycastle?
Jednak, gdy próbuję utworzyć szyfr z PKCS1-OAEP.
Cipher c = Cipher.getInstance("RSA/None/PKCS1-OAEP", "BC");
Poniżej 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)
Może to RSA/None/PKCS1-OAEP
jest błędna? ale nie może znaleźć żadnej ostatecznej odpowiedzi, aby powiedzieć, że PKCS1-OAEP jest nieobsługiwany lub poprawny sposób jego zdefiniowania.
Używam biblioteki spongycastle, więc mam pełną implementację bouncycastle.
Bez bardziej szczegółowo, że trudno powiedzieć, ale może to być coś w rodzaju 'RSA/brak/OAEPWithSHA1AndMGF1Padding', na przykład. – vcsjones
@vcsjones widzę, że odnotowano na następujących http://www.bouncycastle.org/wiki/display/JA1/Frequently+Asked+Questions, ale podczas gdy to przechodzi przez wyjątek NoSuchPaddingException nie jest, t takie same wypełnienie jak "PKCS1- OAEP ". Jakie dodatkowe szczegóły mogłyby pomóc? – scottyab
OAEP używa * jakiegoś * rodzaju funkcji mieszającej, niezależnie od tego, czy jest to SHA1, czy coś innego zależy od implementacji. Musimy dowiedzieć się więcej o Twojej implementacji systemu iOS. Na przykład, jeśli użyłeś 'RSA_PKCS1_OAEP_PADDING' w twojej funkcji RSA_public_encrypt, to jest SHA1 z MGF1. http://developer.apple.com/library/ios/#documentation/System/Conceptual/ManPages_iPhoneOS/man3/RSA_public_encrypt.3ssl.html. Jak wygląda Twój kod iOS? – vcsjones