接口安全之数据签名
2018/11/19 14:31 分类: 技术交流 浏览:48
在接口开发中,为了保证请求数据的安全性,防止数据被篡改,我们通常需要对请求参数进行加密。
这里讲解一下使用数字签名进行安全加密的方式。
1.接口协议
接口协议中通常会提供一个 appKey作为客户端的唯一标识,appSecret作为接入密钥。
假设appKey=1001,appSecret=as5dghwe3hjf8dfkw9
接口地址为:http://www.itsource.cn/api/login
请求参数 :
appKey 客户端标识
username 用户名
password 密码
time Unix时间戳
sign 数字签名
2.加密处理
签名算法过程:
1.对除签名外的所有请求参数按key做升序排列 (假设当前时间的时间戳是12345678)
例如:有c=3,b=2,a=1 三个参,另加上时间戳后, 按key排序后为:a=1,b=2,c=3,timestamp=12345678。
2.把参数名和参数值连接成字符串,得到拼装字符:
a1b2c3timestamp12345678
3.用密钥连接到接拼装字符串尾部,然后进行32位MD5加密,最后将到得MD5加密摘要转化成大写。
相应php代码如下:
得到签名后将签名添加到请求参数后面,这样请求接口:
http://www.itsource.cn/api/login?appKey=1001&appSecret=as5dghwe3hjf8dfkw9&username=张三&password=123456&time=1241234567&sign=E10ADC3949BA59ABBE56E057F20F883E
3.验证数字签名
接口服务端通过相同的加密方式验证数字签名
验证数字签名的php代码如下
赞 0