OpenAPI接口签名验签设计

mtain 2022年05月26日 132次浏览

一、 参数

private static String url = “http://xxx.xxx.com/gateway”;
private static String appId = “test”;
private static String appKey = “3336AFF98D5D004BC478DC419EA9AA7B”;

二、加密方式

1. 哈希算法型(单向不可逆)

signKey=md5(appId, appKey, datestamp)
signKey=sha256(appId, appKey, datestamp)

特点

  1. 签名和验证签名方使用相同的计算方式
  2. 因为不能解密,所以不能把参数直接加密

2. 对称加密型

密文=AES加密(appId, appKey, datestamp, 明文)
明文=AES解密(appId, appKey, datestamp, 密文)

特点

  1. 能把参数直接加密解密
  2. 加解密使用相同的密钥,密钥有泄漏风险

3. 非对称加密型(公钥+私钥)

密文=(公钥, ‘RSA2’, 短明文)
明文=(私钥, ‘RSA2’, 密文)

公钥加密
私钥解密
私钥签名
公钥验签

特点

  1. 加密使用公钥,解密使用私钥
  2. 长字符串加密效率不高,有长度限制
  3. 常用组合:RSA传递密钥+AES加解密

三、安全加固

  1. 设置IP白名单
  2. 增加自定义的加密规则