Data must not be longer than 117 bytes异常 RSA加密解密内容超长报错_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Data must not be longer than 117 bytes异常 RSA加密解密内容超长报错

Data must not be longer than 117 bytes异常 RSA加密解密内容超长报错

 2013/7/30 10:09:34  ankeway  程序员俱乐部  我要评论(0)
  • 摘要:在使用RSA加密解密内容时会出现这样的异常:Datamustnotbelongerthan117bytes。解决办法是:分段加密和分段解密//加密时超过117字节就报错。为此采用分段加密的办法来加密byte[]enBytes=null;for(inti=0;i<data.length;i+=64){//注意要使用2的倍数,否则会出现加密后的内容再解密时为乱码byte[]doFinal=cipher.doFinal(ArrayUtils.subarray(data,i,i+64))
  • 标签:not 内容 异常 加密解密
在使用 RSA加密解密内容时会出现这样的异常
Data must not be longer than 117 bytes。

解决办法是:分段加密和分段解密
class="java" name="code">
// 加密时超过117字节就报错。为此采用分段加密的办法来加密 
byte[] enBytes = null;
for (int i = 0; i < data.length; i += 64) {  
// 注意要使用2的倍数,否则会出现加密后的内容再解密时为乱码
    byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(data, i,i + 64));  
    enBytes = ArrayUtils.addAll(enBytes, doFinal);  
}


// 解密时超过128字节就报错。为此采用分段解密的办法来解密
StringBuilder sb = new StringBuilder();
for (int i = 0; i < data.length; i += 128) {
    byte[] doFinal = cipher.doFinal(ArrayUtils.subarray(data, i, i + 128));
    sb.append(new String(doFinal));
}
dataReturn = sb.toString();
发表评论
用户名: 匿名