为了账号安全,请及时绑定邮箱和手机立即绑定

java使用Cipher 执行RSA解密报错

java使用Cipher 执行RSA解密报错

子衿沉夜 2019-05-04 23:15:41
padding选取都是一样的,加密成功,解密失败,很奇怪。#主要代码public static byte[] rsa_encrypt(byte[] bArr, byte[] bArr2) {try {Key a = MyKey.getPublicKey(bArr2);if(a == null)System.out.println("get pub key error!");Cipher instance = Cipher.getInstance("RSA/ECB/PKCS1Padding");instance.init(Cipher.ENCRYPT_MODE, a);return instance.doFinal(bArr);} catch (Exception e) {e.printStackTrace();return null;}}public static byte[] rsa_decrypt(byte[] bArr, byte[] bArr2) {     try {         Key a = MyKey.getPrivateKey(bArr2);         if(a == null)             System.out.println("get pri key error!");         Cipher instance = Cipher.getInstance("RSA/ECB/PKCS1Padding");         instance.init(Cipher.DECRYPT_MODE, a);         return instance.doFinal(bArr);     } catch (Exception e) {         e.printStackTrace();         return null;     } }#报错信息javax.crypto.BadPaddingException: Decryption errorat sun.security.rsa.RSAPadding.unpadV15(Unknown Source)at sun.security.rsa.RSAPadding.unpad(Unknown Source)at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:363)at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:389)at javax.crypto.Cipher.doFinal(Cipher.java:2164)at qqpinyin.EncryptTool.rsa_decrypt(EncryptTool.java:134)at qqpinyin.main.key_decrypt(main.java:80)at qqpinyin.main.main(main.java:96)
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

bArr 多大?加密 buffer 至少要和 public key-11 一樣大(比方 117), 解密buffer 至少要和 public key 同大(比方 128)。


查看完整回答
反对 回复 2019-05-16
  • 2 回答
  • 0 关注
  • 2326 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号