[TOC]
一、非对称加密
1 非对称加密算法应用方式
- 银行自己生成公钥、私钥,将自己的公钥提供给集成商下载。
- 集成商自己生成公钥、私钥,将自己的公钥上传到银行系统中。
2 算法加解密方式
1)私钥加密公钥解密
- 场景:适用于双方均需要核验用户身份的场景,如: A 会主动与 B 进行接口交互,B 也会主动与 A 进行接口交互,双方均需要验证各自的身份。
- 优点:可防止数据被篡改、同时可有效验证接口调用方的身份
- 缺点:数据保密性程度不够
- 应用领域:互为接口提供方与接口消费方,银行与集成厂商
2)私钥解密公钥加密
- 场景:适用于数据加密的场景,如: A 会主动与 B 进行数据交互,B 也会主动与 A 进行数据交互,数据保密性程度要求高
- 优点:数据保密性程度高
- 缺点:数据可能被伪造
- 应用领域:政府内部系统间接口交互,公文交换类系统
3 常用的非对称加密算法
RSA、DSA、ECDSA 等
二、对称加密
1 对称加密算法应用方式
- 服务提供商生成 appid、appkey ,将二者信息保存,并提供给集成商。
- 集成商获取到 appid、appkey ,进行接口服务调用时数据加密或签名。
2 算法使用方式
1)使用appkey 进行数据加解密,appid 用来关联获取对应的appkey
- 场景:主要为服务提供类接口,双方信任度很高,可以忽略双方数据伪造的场景,另外,加密一 般不涉及到相互接口的调用
- 优点:实现简单,不用单独生成公钥、私钥
- 缺点:appkey 双方共有,哪方发生信息泄露不利于追责
- 应用领域:应用类服务的提供商,如:服务市场中的,短信类、基础信息查询类服务
3 常用的对称加密算法
DES、AES 等
三、其它
在数据加密要求低,需要单独验证接口调用方身份的场景时,可使用 appid、appkey 进行数据签名。
实现方式:
1)签名生成
将接口业务请求参数获取后,按参数名的属性名字典序排序后,将对应属性值、对应的appkey、接口调用时间加入到待签名的字符串中,基于字符串进行MD5 处理,将具体值作为 sign 值进行参数传递,另外需额外传递对应的appid、接口调用时间time。
2)签名验证
接口提供方,获取到接口对应的业务参数,与附带的 sign、appid、time后,先判断time 是否在合理的时间周期内,如果不合理直接返回异常。否则,进行逆向构建对应的数据签名串,同样使用 MD5 进行签名生成,对生成的值与sign值进行比较,不匹配则验签失败。
注:如果接口中包含 request body 中的参数,可以将 body 中的参数直接以字符串的形式接收后,之前拼接到待签名的串中。