Java / Kotlin Encrypt AES key con key privada y pública

así que últimamente vi un video de un informático en el que decían que al usar encriptación, deberían usar keys AES y encriptar esta key con key pública y privada. Esto significa: Tengo una key pública de otra persona y mi propia key privada.

La razón detrás de encriptarlo con su propia key privada es que esto verifica que el post debe venir de mí, porque nadie más tiene mi key privada, por lo que el encryption con mi key pública solo puede funcionar con los posts que yo envíe.

El problema es que después de mi primer encryption, la salida de la matriz de bytes se hace demasiado larga y no puedo encriptarla en otro momento. ¿Hay alguna forma de evitar esto?

Este es mi código:

val aKey = generateAESKey() val kG = KeyPairGenerator.getInstance("RSA") kG.initialize(2048) val own = kG.genKeyPair() val strange = kG.genKeyPair() String(aKey.encoded).encryptRSA(strange.public).encryptRSA(own.public) fun generateAESKey(): Key { val generator = KeyGenerator.getInstance("AES") generator.init(128) return generator.generateKey() fun String.encryptRSA(key: Key): String { val encryptCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding") encryptCipher.init(Cipher.ENCRYPT_MODE, key) val cipherText = encryptCipher.doFinal(this.toByteArray(charset("UTF- 8"))) return String(cipherText) } fun String.decryptRSA(key: Key): String { val bytes = this.toByteArray() val decryptCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding") decryptCipher.init(Cipher.DECRYPT_MODE, key) return String(decryptCipher.doFinal(bytes), charset("UTF-8")) } 

Esto, por ejemplo, me da el siguiente error:

 Exception in thread "main" 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 de.intektor.kentai_http_common.util.EncryptionKt.encryptRSA(encryption.kt:30) at de.intektor.test.TestKt.main(Test.kt:19) 

Por supuesto, esto es solo un caso de testing.