接口开发是各系统之间对接的重要方式,其数据是通过开放的互联网传输,对数据的安全性要有一定要求。为了提高传输过程参数的防篡改性,签名sign的方式是目前比较常用的方式。

我这里介绍一种方式,是目前国内互联网公司常用的一种方式,其中淘宝的支付宝支付接口、淘宝开放平台接口、腾讯开放平台等应用的一种方式。

一、签名参数sign生成的方法
第1步: 将所有参数(注意是所有参数),除去sign本身,以及值是空的参数,按参数名字母升序排序。
第2步: 然后把排序后的参数按参数1值1参数2值2…参数n值n(这里的参数和值必须是传输参数的原始值,不能是经过处理的,如不能将"转成”后再拼接)的方式拼接成一个字符串。
第3步: 把分配给接入方的验证密钥key拼接在第2步得到的字符串前面。
第2步: 在上一步得到的字符串前面加上验证密钥key(这里的密钥key是接口提供方分配给接口接入方的),然后计算md5值,得到32位字符串,然后转成大写.
第4步: 计算第3步字符串的md5值(32位),然后转成大写,得到的字符串作为sign的值。

举例:
假设传输的数据是http://www.xxx.com/interface.aspx?sign=sign_value&p2=v2&p1=v1&method=cancel&p3=&pn=vn(实际情况最好是通过post方式发送),
其中sign参数对应的sign_value就是签名的值。
第一步,拼接字符串,首先去除sign参数本身,然后去除值是空的参数p3,剩下p2=v2&p1=v1&method=cancel&pn=vn,然后按参数名字符升序排序,method=cancel&p1=v1&p2=v2&pn=vn.
第二步,然后做参数名和值的拼接,最后得到methodcancelp1v1p2v2pnvn
第三步,在上面拼接得到的字符串前加上验证密钥key,我们假设是abc,得到新的字符串abcmethodcancelp1v1p2v2pnvn
第四步,然后将这个字符串进行md5计算,假设得到的是abcdef,然后转为大写,得到ABCDEF这个值即为sign签名值。
注意,计算md5之前请确保接口与接入方的字符串编码一致,如统一使用utf-8编码或者GBK编码,如果编码方式不一致则计算出来的签名会校验失败。

二、签名验证方法:
根据前面描述的签名参数sign生成的方法规则,计算得到参数的签名值,和参数中通知过来的sign对应的参数值进行对比,如果是一致的,那么就校验通过,如果不一致,说明参数被修改过。

HTTP对外接口,如何增加签名机制相关推荐

  1. 你连对外接口签名都不会知道?有时间还是要学习学习。

    背景 周三,18:00. 小明扭了扭微微发酸的脖子,揉了揉盯着屏幕有些干涩的眼睛. 终于忙完了,临近下班,整个人心也变得放松起来. "对接方需要我们提供新的服务,下周二上线,需求我发你了,很 ...

  2. 探讨一下常见支付系统的对外接口

    作为一个具备用户交易能力的网站,丰富它的支付渠道对于获客和提高日活都 有不可估量的积极作用.算起来,我接触过的支付系统也有几十个了,在这里总结一下我所接触过的支付系统对外接口的设计方案. 1. 支付宝 ...

  3. Effective C# 原则22:用事件定义对外接口(译)

    Effective C# 原则22:用事件定义对外接口 Item 22: Define Outgoing Interfaces with Events 可以用事件给你的类型定义一些外部接口.事件是基于 ...

  4. Qtum量子链QIP-5提案:在智能合约交易输出脚本上增加签名证明,允许用户以代付方式调用合约

    ​摘 要 Qtum量子链的主要目标之一是建立基于权益共识机制(PoS).并支持 UTXO 的智能合约模型.在智能合约层面上,Qtum 量子链兼容比特币 UTXO 模型和符合 AAL 规范的虚拟机,其中 ...

  5. 一篇文章看明白 Android v1 v2 签名机制

    Android - v1 & v2 签名机制 相关系列 一篇文章看明白 Android 系统启动时都干了什么 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制 一篇文章看明 ...

  6. 【Android安全】Android app开发者证书和代码签名机制

    参考链接: 安卓证书相关验证机制: https://duanqz.github.io/2017-09-01-Android-Digital-Signature (部分内容不准确) 关于META-INF ...

  7. 安卓应用签名机制分析

    Android 应用签名是应用打包过程的重要步骤之一,Google 要求所有的应用必须被签名才可以安装到 Android 操作系统中.Android 的签名机制也为开发者识别和更新自己应用提供了方便. ...

  8. 比特币多重签名机制使用篇

    原文链接:http://www.wanbizu.com/baike/201408191710.html 概述 比特币的多重签名机制可以实现多方共同管理资产,也可以用于第三方交易担保. 多重签名最多支持 ...

  9. android digest 认证,探究 Android 签名机制和原理

    背景 最近在调研一个测试工具的使用,在使用中发现被测试工具处理过的apk文件经安装后打开就会崩溃,分析崩溃日志后原因是签名不一致导致的. 说到Android中的签名,可能大家都知道签名的目的就是为了保 ...

最新文章

  1. 将模式对话框的返回值回送(PostBack)到服务端
  2. Java将视频转为缩略图--ffmpeg
  3. 阿里巴巴Java“代码反潜机”P3C喜提首届中国优秀开源项目二等奖!
  4. Python 链接汇总
  5. Spring Boot文档阅读笔记=Caching Data with Spring
  6. 2017.9.19 禁忌 失败总结
  7. 诺基亚n9支不支持java,支持诺基亚N9 MeeGo UC浏览器正式发布
  8. 鸿蒙电视投屏软件,鸿蒙打造 未来电视就这样!荣耀智慧屏PRO深度评测
  9. 面向对象3-析构函数和私有属性
  10. 21 意境级讲解 共指消解的方法
  11. Win10磁盘管理教程:新建、合并分区,添加和修改盘符
  12. 米家摄像头显示服务器错误,米家摄像头云服务器
  13. Python TimedRotatingFileHandler 修改suffix后无法自动删除文件
  14. 如何在SSD和HDD VPS主机之间进行选择
  15. Android开发 更改返回按钮的图标
  16. 修改db_create_online_log_dest_1
  17. 51单片机汇编入门基础代码-流水灯
  18. 没有上下音量键,如何实现fastboot 模式下unlock/lock
  19. Qorvo 扩展 750V SiC FET 范围
  20. 基于NI myRIO的小车红外循迹避障

热门文章

  1. mysql php宝塔 root_宝塔面板,脚本命令
  2. 二分法python上机实验报告_二分查找-Python刷题笔记
  3. 计组之中央处理器:6、微指令格式设计、微程序控制单元的设计
  4. event_base_loop
  5. Windows安装.net Framework时安装不上,提示已处理证书链,但是在不受信任提供程序信任的根证书中终止
  6. C/C++函数指针与回调函数总结(函数指针数组)
  7. linux下/var/run目录下.pid文件的作用(文件锁,防止重复启动)
  8. 23. PE结构-PE详解之输出表(导出表)
  9. VC++动态库封装及调用
  10. 利用scrapy爬取文件后并基于管道化的持久化存储