最近工作上要对接第三方渠道商竞价广告业务, 基本能有竞价能力的广告商, 在上报广告价格的时候都会对价格进行加密, 这时候大多数广告商都是用了AES
算法. 和第三方对接的时候, 由于广告商使用的加密模式不一样, 加上有些广告商连SDK
也没有, 常常只有示例的Java
客户端代码.
- 这时候自己可以找一个第三方的网站做中间人来校验, 比如这个https://tool.lmeee.com/jiami/aes
- 尽管只提供了
Java
代码, 但是我们应该可以从代码中分析出来使用的算法, 首先要确定的有- 加密模式 (
ECB
,BCB
,CFB
,OFB
) - 填充方式 (
pkcs5padding
,pkcs7padding
,zeropadding
) - 秘钥长度 (128位(8个字符秘钥), 192位(12个字符秘钥), 256位(16个字符秘钥))
- IV (初始化向量, 有些需要随机, 有些渠道商会让写死)
- 密文最后是否需要
Base64UrlSafeEncode
- 加密模式 (
- 对于
AES
算法, 发现很多还是使用ECB
模式, 尽管存在一定被破译的风险. 但是因为使用起来太简单, 不需要IV
, 只要一个秘钥, 所以很多第三方都使用这种方式 - 知盟使用的是
CFB
模式, 虽然是随机秘钥, 但是没有把IV
传递给知盟, 我猜它们就没验证这个加密的参数 - 软告云用的
CBC
模式, 虽然也用IV
, 但是我猜它们为了简单易用化, 把秘钥也当做IV
传递, 所以是一个固定的IV