f签是什么签,API接口防篡改(加签、验签)原理

剑桥大学博士后,剑桥大学博士后含金量,剑桥大学博士后王京刚,剑桥大学博士后申请

因此我们在接口设计时必须考虑防篡改校验,加签、验签就是用来解决这个问题的。划重点,敲黑板:加签、验签是用来解决防篡改问题的。使用相同的摘要算法计算得到验签方摘要值。元,服务端接收到请求参数计算得到验签摘要值,通过非对称加密算法解密得到签名摘要值,由于金额发生了变化,验签摘要值不等于签名摘要值,因此验签失败,该请求不予处理。划重点,敲黑板:加签、验签是用来解决防篡改问题的。

定义

在客户端与服务端请求交互的过程中,请求的数据容易被拦截并篡改,比如在支付场景中,请求支付金额为 10 元,被拦截后篡改为 100 元,由于没有防篡改校验,导致多支付了金钱f签是什么签,造成了用户损失。因此我们在接口设计时必须考虑防篡改校验,加签、验签就是用来解决这个问题的。划重点,敲黑板:加签、验签是用来解决防篡改问题的。

签名主要包含摘要和非对称加密两部分内容f签是什么签,首先对需要签名的数据进行摘要计算得到摘要值,然后通过签名者的私钥对摘要值进行非对称加密即可得到签名结果。

验签主要包含摘要、非对称解密、摘要比对三部分内容,首页对接收到的数据进行摘要计算得到验签方摘要值,然后通过签名者的公钥对摘要值进行非对称解密得到签名方摘要值,将签名方摘要值与验签方摘要值进行比对,如果相等则验签成功,否则验签失败。

签名

1、参数排序

将需要签名的内容根据参数名称进行排序,排序规则按照第一个字符的ASCII码值递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的ASCII码递增排序,以此类推。将参数内容进行排序,可以保证签名、验签双方参数内容的一致性。

为什么会产生不一致?

签名方以 Json 格式将参数内容发送给验签方,验签方需要将 Json 格式的参数内容反序列化为对象,由于验签方可能使用不同的编程语言,不同的 Json 框架,所以会导致双方的参数顺序不一致。

2、参数拼接

将排序后的参数与其对应值,组合成“参数=参数值”的格式,并且把这些参数用&字符连接起来,此时生成的字符串为待摘要字符串。

3、摘要计算

通过摘要算法求待摘要字符串的摘要值,常用的摘要算法如MD5、SHA、HMAC等。

4、非对称加密

使用非非对称加密算法,利用客户端的私钥对摘要值进行加密,生成内容我们称之为签名。

5、发送请求

将参数内容、字符编码、签名方法(非对称加密算法)、签名发送给验签方。

f签是什么签

验签

验签方收到请求后进行验签。

1、参数排序

将收到参数内容根据参数名称进行排序,排序规则与签名方保持一致。

2、参数拼接

拼接方式与签名方保持一致,生成待摘要字符串。

3、摘要计算

使用相同的摘要算法计算得到验签方摘要值。

4、非对称解密

使用相同的非对称加密算法,对收到的签名进行解密,得到签名方摘要值。

5、摘要比对

如果签名方摘要值等于验签方摘要值,则验签成功,否则验签失败。

问题回顾

接口增加签名、验签后,在支付场景中,请求支付金额为 10 元,被拦截后篡改为 100 元,服务端接收到请求参数计算得到验签摘要值,通过非对称加密算法解密得到签名摘要值,由于金额发生了变化,验签摘要值不等于签名摘要值,因此验签失败,该请求不予处理。

关于加签、验签过程中使用到的算法、排序、拼接等都需要签名方开发人员、验签方开发人工共同协商与约定。BAT 开方平台提供的接口基本都采用的是这种方式进行签名的,在接口设计时可以参考他们的设计方案,大的平台经过千锤百炼,提炼出来的自然是精品,站在巨人的肩膀上可以让我们事半功倍。当然我们要做到知其然知其所以然。划重点,敲黑板:加签、验签是用来解决防篡改问题的。

参考资料

1.摘要算法、对称加密、非对称加密、数字签名、数字证书浅析

2.支付宝签名文档

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请添加站长微信举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://techan.xtucq.com/geditechan/101650.html

(0)
上一篇 2023年9月2日 下午12:05
下一篇 2023年9月2日 下午12:05

相关推荐

联系我们

联系我们

18923864400

在线咨询: 资深顾问

邮件:xtucq520@163.com

工作时间:周一至周五,9:00-18:00,节假日休息

关注微信

乡土传情微信

返回顶部
在线客服