androidRSA加密,java解密出现错误或者乱码

来源:互联网 发布:linux 文件数量 编辑:程序博客网 时间:2024/05/04 17:55

后台是java,我是做android的,这是前提。

前两天遇到一个问题,项目要求一些敏感数据用公钥加密之后传过去,或者是后台传过来的数据用公钥解密。
然后就遇到问题了
首先是我解密出现乱码,而且乱码很奇葩,解析出来的密文后面是正确的,前面附加了一段乱码

然后后台解析我传过去的密文也出现了问题,直接解析错误。

网上找了很久没找到,问别人,有个哥们告诉我是编码的问题,就是他:上海-零度    qq群里叫这个,哈哈


================================================================================

好了,正式说原因和解决方法



java和android默认的加密方式不一样,如下:

private static String RSA_ANDROID = "RSA/ECB/PKCS1Padding";private static String RSA_JAVA = "RSA/None/PKCS1Padding";

只要在解密后台数据的时候,用android默认的,在加密数据的时候,用java默认的就可以了
容我举个栗子:
/** * 用公钥加密 <br> * 这个是加密之后用来传给后台的 *  * @param data *            需加密数据的byte数据 * @param pubKey *            公钥 * @return 加密后的byte型数据 */public static byte[] encryptData(byte[] data, PublicKey publicKey) {try {Cipher cipher = Cipher.getInstance(RSA_JAVA);// 编码前设定编码方式及密钥cipher.init(Cipher.ENCRYPT_MODE, publicKey);// 传入编码数据并返回编码结果return cipher.doFinal(data);} catch (Exception e) {e.printStackTrace();return null;}}
==============================================
/*** * 用公钥解密 * 这个是接收到后台传过来的密文,解密用的 * @param encryptedData * @param publicKey * @return */public static byte[] decryptData(byte[] encryptedData, PublicKey publicKey) {try {Cipher cipher = Cipher.getInstance(RSA_ANDROID);cipher.init(Cipher.DECRYPT_MODE, publicKey);return cipher.doFinal(encryptedData);} catch (Exception e) {return null;}}



ok,希望有帮到你


最后,我的名字叫雷锋~

4 0
原创粉丝点击