Java Android错误“;RSA数据块的数据太多“;
A我的Android项目(RSA加密/解密)中有一个错误。 加密通过了,但当我试图解密加密文本时,出现了一个错误:“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
公共字符串解密(字符串文本)引发异常
{
试一试{
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;
}