2019/7/30
加密的代码如下,des加密的过程中发现结果多出空格以及换行等不必要的字符。原因是android.util.Base64.encode(result, 0)这个byte转换为string时的会产生多余的空格以及换行。
/**
*jsonData是加密的字符串,key是动态密钥,vi是初始化向量
*/
public static String encode(String jsonData,String key,String iv)
{
if (jsonData == null)
return null;
Cipher cipher = null;
String result = null;
try {
cipher = getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes());
cipher.init(ENCRYPT_MODE, secretKey, ivParameterSpec);
//加密解码后的字符串会出现空格或者换行需要去除
result = new String(Base64.encode(cipher.doFinal(jsonData.getBytes("UTF-8")),Base64.DEFAULT)).replaceAll("\r\n|\r|\n", "");
} catch (Exception e) {
e.printStackTrace();
}
return result;
}