接口对接常见加/解密方法
1.MD5签名加签方法
public class PackingEncryptByMD5 {
public static String getMD5Encrypt(String coutent) {
String ret = DigestUtils.md5DigestAsHex(coutent.getBytes());
return ret;
}
public static String getSign(String appsecret, Map<String, String> param) {
if (param != null && param.keySet().size() > 0) {
List<String> keyList = new ArrayList<String>(param.keySet());
Collections.sort(keyList);
String cont = "";
for (int i = 0; i < keyList.size(); i++) {
cont = cont + keyList.get(i) + "=" + param.get(keyList.get(i));
if (i < keyList.size() - 1) {
cont = cont + "&";
}
}
cont = cont + appsecret;
System.out.println("cont:" + cont);
return getMD5Encrypt(cont);
}
return null;
}
}
2.Base64密文AES/CBC/PKCS5Padding方式解密
public class PackingDecryptUtil {
private static final String ALGORITHM = "AES";
private static final String TRANSFORMATION = ALGORITHM + "/CBC/PKCS5Padding";
private static final String UTF_8 = "UTF-8";
/**
* 解密 Base64 编码的字符串
*
* @param base64EncodedData Base64 编码的加密数据
* @param keyStr 密钥,必须是 16, 24 或 32 字节长
* @return 解密后的字符串
* @throws Exception 如果解密过程中出现错误
*/
public static String decryptBase64ToText(String base64EncodedData, String keyStr) throws Exception {
byte[] key = keyStr.getBytes(); //
// 将 Base64 编码的数据转换回字节数组
byte[] encryptedData = Base64.getDecoder().decode(base64EncodedData);
// 创建 SecretKeySpec 对象
SecretKeySpec secretKey = new SecretKeySpec(key, ALGORITHM);
// 初始化 Cipher 对象
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.DECRYPT_MODE, secretKey,new IvParameterSpec(key));
// 执行解密操作
byte[] decryptedData = cipher.doFinal(encryptedData);
// 将解密后的字节数组转换为字符串
return new String(decryptedData, UTF_8);
}
}