AES 加密算法应用

最近工作上要对接第三方渠道商竞价广告业务，基本能有竞价能力的广告商，在上报广告价格的时候都会对价格进行加密，这时候大多数广告商都是用了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