RSA Обивка с Надувной Замок на BlackBerry - PullRequest
3 голосов
/ 10 марта 2011

Я использую Bouncy Castle для шифрования строк, чтобы отправить их на мой веб-сервис java, где они дешифруются, когда сообщение достигает сервера, я получаю BadPaddingException, кто-нибудь знает, как правильно добавить заполнение в шифр RSAс Надувным замком на J2ME?

Это код шифрования на клиенте:

public byte[] Encrypt(byte[] data)
  {
     RSAKeyParameters publicKey = new RSAKeyParameters(false, new BigInteger(_publicKeyModulus), new BigInteger(_publicKeyExponent));
     RSAEngine engine = new RSAEngine();
     engine.init(true, publicKey);

     byte[] output = engine.processBlock(data, 0, data.length);

     return output;
  } 

И вот как я расшифровываю его на стороне сервера:

public byte[] Decrypt(byte[] data)
    {
        try {
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.DECRYPT_MODE, privateKey);
            byte[] cipherData = cipher.doFinal(data);
            return cipherData;
        } catch (NoSuchAlgorithmException ex) {
            Logger.getLogger(EncryptorDecryptor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NoSuchPaddingException ex) {
            Logger.getLogger(EncryptorDecryptor.class.getName()).log(Level.SEVERE, null, ex);
        } catch(IllegalBlockSizeException ex) {
            Logger.getLogger(EncryptorDecryptor.class.getName()).log(Level.SEVERE, null, ex);
        } catch(InvalidKeyException ex) {
            Logger.getLogger(EncryptorDecryptor.class.getName()).log(Level.SEVERE, null, ex);
        } catch(BadPaddingException ex) {
            Logger.getLogger(EncryptorDecryptor.class.getName()).log(Level.SEVERE, null, ex);
        }

        return null;
    }

1 Ответ

7 голосов
/ 11 марта 2011

Вместо использования RSAEngine непосредственно используйте класс PKCS1Encoding и создайте его с помощью

PKCS1Encoding engine = new PKCS1Encoding(new RSAEngine());
...