Как установить отступ для шифрования подписанного ключа в Java?

// cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

 public byte[] sign_and_encrypt( SecretKey key ) throws InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
        cipher.init(Cipher.WRAP_MODE, priv_key);
        byte [] signed = cipher.wrap(key);

        cipher.init(Cipher.ENCRYPT_MODE, their_pub_key);
        System.out.println("Signed length: " + signed.length);

        return cipher.doFinal(signed);
 }

У меня проблема с подписанием и шифрованием сеансового ключа в java. подписанный byte[] имеет длину 256 байт, ноdoFinal внизу можно брать только блоки размером 245 или меньше.

Есть ли способ установить количество добавляемых отступов? Или другой способ заставить это работать без шифрования двух частей подписанного?

Исключение, которое я получаю, это

javax.crypto.IllegalBlockSizeException: Data must not be longer than 245 bytes
    at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:344)
    at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:389)
    at javax.crypto.Cipher.doFinal(Cipher.java:2165)
    at Crypto.JEncrypRSA.sign_and_encrypt(JEncrypRSA.java:76)
    at Chat.Client.get_session_key(Client.java:115)
    at Chat.Client.main(Client.java:131)

0 ответов

Другие вопросы по тегам