后台是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);