Featured image of post AES 加密算法应用

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