您好,欢迎来到哗拓教育。
搜索
您的当前位置:首页java android rsa加密解密_Android RSA数据加密与Java服务端RSA私钥解密出错问题

java android rsa加密解密_Android RSA数据加密与Java服务端RSA私钥解密出错问题

来源:哗拓教育

1. 出错描述:服务RSA解密抛出javax.crypto.BadPaddingException: Decryption error

2.出错原因:Android系统使用的虚拟机(dalvik)跟SUN标准JDK是有所区别的,其中他们默认的RSA实现就不同。即Android端用Cipher.getInstance("RSA")方法进行加密时,使用的provider是Bouncycastle Security provider,Bouncycastle Security provider默认实现的是“RSA/None/NoPadding”算法,而服务器(PC)端用Cipher.getInstance("RSA")进行解密时,使用的是Sun的security provider,实现的是“RSA/None/PKCS1Padding”算法,所以,解密时会失败。

3. 解决方法:Android端的加密算法如下

/**

* 公钥加密

* @param data 待加密数据

* @param key 密钥

* @return byte[] 加密数据

* */

public static byte[] encryptByPublicKey(byte[] data,String key) throws Exception{

//解密密钥

byte[] keyBytes = decryptBASE(key);

//实例化密钥工厂

KeyFactory keyFactory=KeyFactory.getInstance(KEY_ALGORITHM);

//初始化公钥

//密钥材料转换

X509EncodedKeySpec x509KeySpec=new X509EncodedKeySpec(keyBytes);

//产生公钥

PublicKey pubKey=keyFactory.generatePublic(x509KeySpec);

//数据加密

Cipher cipher=Cipher.getInstance("RSA/None/PKCS1Padding");//Android端使用

cipher.init(Cipher.ENCRYPT_MODE, pubKey);

return cipher.doFinal(data);

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo2.com 版权所有 湘ICP备2023021991号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务