Cryption的doFinal当使用的是加密模式时,加密后的二进制的数据的长度和什么有关?

v_winter_v 2014-06-12 01:01:26
public static byte[] encipher(byte[] data, Key key, String algorithm,
String mode, String padding) {

try {
Cipher cipher = Cipher.getInstance(algorithm + "/" + mode + "/"
+ padding);
cipher.init(Cipher.ENCRYPT_MODE, key);
return cipher.doFinal(data);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return null;
}

算法使用的是RSA加密算法,mode为ECB,填充类型为PKCS1Padding。参数的说明应该是非常的明了。使用这个方法时,加密同一个数据时,有时会出现加密后的二进制的数据长度不一样的情况。在一个项目中使用这个算法最后结果是128位,在另一个项目中使用时256位。所以,想问一下,doFinal()加密数据后,数据的长度和什么有关?
...全文
298 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
vnvlyp 2014-06-12
  • 打赏
  • 举报
回复
你两次的Key长度不一样吧,PKCS1最后的长度和密钥长度是有关的。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧