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

2022-11-02 16:00:55 浏览数 (1)

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

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

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

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

1. 电子签章法大大:

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

代码语言:javascript复制
Base64(
    SHA1(
        app_id
         MD5(timestamp)
         SHA1(app_secret  sort)
    )
)

步骤 1. 序列化需要参与

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

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

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

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

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

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

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

法大大的公共参数有

参数

类型

是否必填

描述

app_id

String

接入方ID

timestamp

String

请求时间 yyyyMMddHHmmss

v

String

版本号

msg_digest

String

签名摘要

2. 诸葛零售云:

公共参数

参与签名的参数

签名格式

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

字符:

代码语言:javascript复制
app_keyxxxpathxxxtimestampxxxv1.0

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

代码语言:javascript复制
SSSapp_keyxxxpathxxxtimestampxxxv1.0SSS

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

代码语言:javascript复制
String sign = SHA256("SSSapp_keyxxxpathxxxtimestampxxxv1.0SSS")

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

3. 银豹:

PosPal 银豹收银系统

请求头

参数

类型

是否必填

描述

time-stamp

String

时间戳,

data-signature

String

1:appKey,请求体 拼接 2:md5 加密(32位) 3:转为大写

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

0 人点赞