2016-06-29 3 views
2

Мне кажется, что я не могу получить надувной замок Cipher для загрузки экземпляра.Невозможно получить экземпляр экземпляра bouncycaste

я распечатал все алгоритмы и все поставщики, и часть списка выглядит следующим образом:

RSA/ECB/PKCS1Padding : [SunMSCAPI version 1.7] 
RSA/ISO9796-1  : [BC version 1.46] 
RSA/OAEP    : [BC version 1.46] 
RSA/PKCS1   : [BC version 1.46] 

Согласно примерам, которые я видел, это должно работать

try 
    { 

     Cipher cipherb = Cipher.getInstance("RSA/PKCS1", "BC"); 
     cipher.init(Cipher.DECRYPT_MODE, publicKey); 
     ... 
    }  
    catch(Exception e) 
    { 
     e.printStackTrace(); 
     return ; 
    } 

Но я получить исключение на призыв Cipher.getInstance

java.security.NoSuchAlgorithmException: 
    Invalid transformation format:RSA/PKCS1 

Однако RSA/PKCS1 я s в списке. Единственным шифром, с которым я могу получить экземпляр, является Sun one RSA/ECB/PKCS1Padding, который несовместим с тем, где происходят мои дешифрованные данные. И я не могу понять, почему это не работает.

Любые предложения с благодарностью.

+1

Почему, по вашему мнению, существует разница между «RSA/PKCS1» и «RSA/ECB/PKCS1Padding»? –

ответ

0

Первый параметр для Cipher.getInstance(..) это преобразование, которое имеет вид:

"algorithm/mode/padding" or 
"algorithm" 

Согласно bouncycastle's specification RSA + PKCS1 имеют вид: "RSA/NONE/PKCS1Padding" в BouncyCastle

Это, как Маартен намекнул в своем комментарии, то же, что вы получаете с поставщиком SUN, используя "RSA/ECB/PKCS1Padding"

+0

Спасибо, я не видел этот самородок в спецификации bouncycastle и был (по-моему, глупо) полагаться на то, что было сообщено. Кроме того, я не знаю, что есть разница в кодировке, но у меня проблема с декодированием, и, кажется, быстрее попробовать несколько вариантов, а не читать код, чтобы точно определить, что он делает. –

Смежные вопросы