Java/JCE:解密;“长”;用RSA加密的消息
我有一条包含在字节[]中的消息,用“RSA/ECB/pkcs1p”加密。为了解密它,我创建了一个密码c并用Java/JCE:解密;“长”;用RSA加密的消息,java,rsa,encryption,jce,Java,Rsa,Encryption,Jce,我有一条包含在字节[]中的消息,用“RSA/ECB/pkcs1p”加密。为了解密它,我创建了一个密码c并用 c = Cipher.getInstance("RSA/ECB/PKCS1Padding"); 到现在为止,我只使用doFinal()方法对小消息进行了解密,返回一个字节[],其中包含解密的字节 c.init(Cipher.DECRYPT_MODE, privateKey); byte[] decryptetBytes = c.doFinal(encryptedBytes); 但是在这
c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
到现在为止,我只使用doFinal()方法对小消息进行了解密,返回一个字节[],其中包含解密的字节
c.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptetBytes = c.doFinal(encryptedBytes);
但是在这种情况下,数据更大(大约500字节),doFinal()方法抛出一个异常(javax.crypto.IllegalBlockSizeException:数据长度不能超过128字节)。我想我需要使用update()-方法,但我不知道如何让它正常工作。如何做到这一点?使用RSA,您只能对大小不超过密钥长度减去填充长度的块进行加密/解密。若你们的数据比你们的密钥长,那个么它可能只是合并在一个数组中,所以你们应该根据你们的密钥的大小把它分成块(128字节表示1024个密钥,并没有填充,我不确定这是否可能)。使用update()不是这里的情况 简单地说,您必须知道这个数组是如何创建的 一般来说,RSA不应用于加密大量数据,因为它相当耗时。应用于加密对称密码的密钥,如AES 请看这里:
我认为对密钥传输以外的任何东西使用RSA加密都是滥用 为对称密码生成一个新密钥,并用它加密批量数据。然后用RSA加密密钥。将对称加密的密文和非对称加密的内容加密密钥一起发送给收件人。如埃里克森所说 您应该采取的步骤包括: