感谢您的反馈!
order和pay接口需要做加密和解密。
加密范例仅适用于国际机票运价直连的大卖家API接口。
其他业务的接口加密算法请查询对应文档。
...
private static final String CHARSET = "utf-8"; // 指定utf-8
private static final byte[] IV = new byte[16];
private static final String Algorithm = "AES";
private static final String CipherAlgorithm = "AES/CBC/PKCS5Padding";
/**
* 做 AES 加密后进行 BASE64 转码
* @param content 待加密内容
* @param password 加密密钥
* @return
* @throws IllegalArgumentException
...
*/
public static String decrypt(String content, String password) throws IllegalArgumentException
...
{
if (null == content || null == password) {
throw new IllegalArgumentException("待加密内容或密钥为空,请重新设定后再试。");
}
byte[] raw = password.getBytes(CHARSET);
if (raw.length != 16) {
throw new IllegalArgumentException("密钥长度必须为16位,请重新设定后再试。" + password);
}
SecretKeySpec key = new SecretKeySpec(raw, Algorithm);
Cipher cipher = Cipher.getInstance(CipherAlgorithm); // 创建密码器
byte[] byteContent = Base64.decode(content);
if (StringUtil.isNotBlank(content) && (null == byteContent || byteContent.length == 0)) {
throw new IllegalArgumentException("Base64解码失败,业务处理结果需经AES加密和Base64编码再输出。");
}
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(IV)); // 初始化
byte[] result = cipher.doFinal(byteContent);
return new String(result, CHARSET); // 解密
}
...