三方对接时常用的加密方式

347 阅读3分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。 ​

一般在三方暴露对外api时都会通过加密参数来保证数据的不可篡改行,而加密方式多种多样,像MD5、sha1、Base64、sha256、AES等各种加密编码算法。

而在验证用户方面会用到分配给用户的appkey及appSecret等信息,在参数传递的时候会将appKey或者appId作为公共参数传递以在三方符合获取此账户权限及秘钥,而秘钥则是隐示的存在参数加密编码中,三方按相同规则加密编码比对传输编码来保证数据没有被篡改。

而还有可能会对接口版本跟请求有效期进行传参限制,会增加版本参数v及时间戳等参数来限制暴露接口的安全性及多版本的非同加密方式。

以下是几个三方对接时的加密方式:

1. 电子签章法大大:

按上图的摘要计算流程来分析就是如下代码示例和步骤

Base64(
    SHA1(
        app_id
        +MD5(timestamp)
        +SHA1(app_secret+ sort)
    )
)

步骤 1. 序列化需要参与

A.将参与摘要计算的业务参数按字典升序排列

B.将 app_secret 附加到字符串串前

步骤 2. 对得到的字符串进⾏****SHA1 加密

步骤 3. 计算 timestampMD5值,并和app_id ,步骤 2 中得到的字符串拼接得到新的字符串

步骤 4. 对步骤3中得到的字符串进行****SHA1 加密

步骤 5. 对步骤 4 中得到的字符串进⾏****base64 加密

在传参时会分公共参数与业务参数,公共参数是必要的,而业务参数则是针对每个接口的业务规则所对应的参数

 

法大大的公共参数有

参数类型是否必填描述
app_idString接入方ID
timestampString请求时间yyyyMMddHHmmss
vString版本号
msg_digestString签名摘要

2. 诸葛零售云:

公共参数

参数类型是否必填描述
app-keyString零售云为租⼾分配
timestampString调⽤API时的系统时间戳,时区为GMT+0800
vString版本号,固定值1.0
signString签名串

参与签名的参数

参数 说明
timestamp调⽤API时的系统时间戳,时区为GMT+0800
app_key零售云为租⼾分配
app_secret零售云为租⼾分配
v版本号,固定值1.0
path请求路径

签名格式

把所有参数名和参数值进⾏拼接(参数值以“xxx”表⽰),拼接时不允许有跨⾏、空格等空⽩

字符:

app_keyxxxpathxxxtimestampxxxv1.0

将零售云分配的 app_secret 拼接到字符串的两端( app_secret 取值以“SSS”表⽰):

SSSapp_keyxxxpathxxxtimestampxxxv1.0SSS

⽤ SHA256 算法对原始串进⾏摘要,伪代码如下:

String sign = SHA256("SSSapp_keyxxxpathxxxtimestampxxxv1.0SSS")

最后得到的编码就是参数sign

3. 银豹:

PosPal 银豹收银系统

请求头

参数类型是否必填描述
time-stampString时间戳,
data-signatureString1:appKey,请求体 拼接2:md5 加密(32位)3:转为大写

这个比较简单,将appKey与请求体拼接后使用MD5加密得到编码串,编码串全部转为大写得到签名串,但是流程都是一致的