了解接口中的 数字签名

在使用HTTP/SOAP协议传输数据时,签名作为其中一个参数,作用如下:

  • 鉴权:客户端和服务端的密钥匹配;
  • 防数据篡改:参数及密钥生成加密字符串,将该字符串作为签名,任意一个参数改变,签名校验就会失败。

一句话描述:客户端与服务端以同样的规则生成密钥,最终比较2个密钥是否相等,若相等,则证明密钥验证成功。

1、鉴权

一个普通的URL:http://127.0.0.1:8000/api/?a=1&b=2

未加密的签名(明文)已加密的签名(加密算法MD5进行加密)
签名@admin1234b9db269c5f978e1264480b0a7619eea
URLhttp://127.0.0.1:8000/api/?a=1&b=2&sign=@admin123http://127.0.0.1:8000/api/?a=1&b=2&sign=4b9db269c5f978e1264480b0a7619eea

MD5 加密过程:

PS:由于MD5算法是不可逆的,所以,当服务器接收到参数后,同样需要对@admin123进行MD5加密,然后,与接口传来的sign加密字符串比较是否相等,从而鉴别是否有权访问接口。

2、防数据篡改

一个普通的URL:http://127.0.0.1:8000/api/?a=1&b=2

未加密的签名(明文)已加密的签名(加密算法MD5进行加密)
签名a=1&b=2&@admin1234b9db269c5f978e1264480b0a7619eea
URLhttp://127.0.0.1:8000/api/?a=1&b=2&sign=@admin123http://127.0.0.1:8000/api/?a=1&b=2&sign=80a0c2d8e01e4022cac3474b6127b1b9

md5加密过程:

3、弊端

由于MD5加密是不可逆的,所以服务端的必须知道客户端接口的参数和值,否则签名验证就会失败。

但一般在接口设计的时候,对客户端的参数并不完全已知,例如:新增用户的手机号,类似这种情况时,就不能使用全参加密。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值