Featured image of post 使用 AES 算法跨服务校验传递数据

使用 AES 算法跨服务校验传递数据

接口权限校验

最近在做广告服务, 需要跨应用传输数据, 因为都是后台(PHP + Go), 所以这里选择的是对称加密算法.


容易遇到的错误点

秘钥的长度

  • (因为文档中说可以有, 16, 24, 32 长度),就选了一个 32 位的导致错误

    AES-128:需要提供 16bytes 的密钥 key
    AES-192:需要提供 24 bytes 的密钥 key
    AES-256:需要提供 32bytes 的密钥 key

  • 所以需要根据使用的算法, 使用对应的秘钥长度

填充的算法

  • PHP因为使用很简单,所以忽略掉了这个
$text = "要加密的字符串";
// 秘钥的长度需要对应算法类型
$key = "2bfbd593bb32b2b9";
// AES-128-ECB 取决于你要使用何种算法
openssl_encrypt($text, 'AES-128-ECB', $key);
  • 如上, 便可很简单的使用Aes加密, 不过这个数据其实默认是base64过后的, 不然用了Go去写,数据不一致.
  • 如果想要原始的二进制数据,可以这样
openssl_encrypt($text, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
  • 第四个参数也可以自定义使用的填充算法

关于联调

  • 不要直接两个服务调试数据
  • 而是找一个在线解密加密网站, 然后通过这个网站互相调通再联调