Java Android错误“;RSA数据块的数据太多“;

Java Android错误“;RSA数据块的数据太多“;,java,android,encryption,rsa,Java,Android,Encryption,Rsa,A我的Android项目(RSA加密/解密)中有一个错误。 加密通过了,但当我试图解密加密文本时,出现了一个错误:“RSA块的数据太多” 如何解决这个问题 代码: 公共字符串解密(字符串文本)引发异常 { 试一试{ Log.i(“Crypto.java:Decrypt”,text); RSAPrivateKey privateKey=(RSAPrivateKey)kp.getPrivate(); Cipher Cipher=Cipher.getInstance(“RSA/ECB/NoPaddin

A我的Android项目(RSA加密/解密)中有一个错误。 加密通过了,但当我试图解密加密文本时,出现了一个错误:“RSA块的数据太多”

如何解决这个问题

代码:

公共字符串解密(字符串文本)引发异常
{
试一试{
Log.i(“Crypto.java:Decrypt”,text);
RSAPrivateKey privateKey=(RSAPrivateKey)kp.getPrivate();
Cipher Cipher=Cipher.getInstance(“RSA/ECB/NoPadding”);
cipher.init(cipher.DECRYPT_模式,privateKey);

byte[]cipherData=cipher.doFinal(text.getBytes());//如果您想使用文本表示法传输密文(在您的例子中是
String
),则需要对密文进行编码/解码(仅是代码中的
text

请尝试在此网站上查找base 64 encoding,其中应该有很多相关信息。加密后进行编码,解密前进行解码。您还应该为明文指定特定的字符编码


最后,您可能应该使用对称密码进行加密,并使用RSA加密对称密钥。否则,您可能会在RSA计算中耗尽空间,因为公钥无法加密大于其模数(密钥大小)的数据.

我对这个库一无所知,但我猜,
文本的字符太多;太长。你能试着把它缩短到一个小的数量来测试吗?@Perception除了它不是一个完全重复的问题外,这个问题很难理解,对于刚开始使用非对称encr的人来说,很难从中提取答案yption/decryption.No,“RSA块失败的数据太多。什么是PKCS#7”对我没有帮助:(很抱歉,我必须修复一个稍微令人困惑的输入错误。希望您不介意我在最后详述了您的RSA加密问题。当然,我不介意,谢谢您的编辑。实际字节数实际上更低,因为RSA的安全性需要填充。
public String Decrypt(String text) throws Exception
{
    try{
        Log.i("Crypto.java:Decrypt", text);
        RSAPrivateKey privateKey = (RSAPrivateKey)kp.getPrivate();
        Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
            cipher.init(Cipher.DECRYPT_MODE, privateKey);
            byte[] cipherData = cipher.doFinal(text.getBytes());// <----ERROR: too much data for RSA block
            byte[] decryptedBytes = cipher.doFinal(cipherData);
            String decrypted = new String(decryptedBytes);

            Log.i("Decrypted", decrypted);

        return decrypted;
    }catch(Exception e){
        System.out.println(e.getMessage());
    }
    return null;
}