如何保证 请求的安全

  1. url参数防篡改
  2. sign 防重放
  3. 来源(身份)是否合法

签名设计方案

设计 客户端规则

给不同客户端 如(app)分配对应的 商户 key, secret 用来确认请求来自 哪一端
key :xxxAndroid.3.14
secret : dfsdfsfxxxxx (用来加密sign)

假设 url 传递的参数为

id: wxd930ea5d5a258f4f
device_info: xxx
body: test
nonce_str: ibuaiVcKdpRxkhJA (该参数是防重放用 ,每次请求随机生成一个 随机字符串,此处可换成 时间戳,做范围时间内sign 失效)
第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
stringTemp="body=test&device_info=xxx&id=wxd930ea5d5a258f4f&nonce_str=ibuaiVcKdpRxkhJA";
第二步:拼接API密钥生成Sign:

将上面 第一步生成的stringTemp 拼接上 客户端分配上的 secret

stringSignTemp=stringTemp+"&secret=dfsdfsfxxxxx" //注:secret为后台返回的的密钥key,对应的secret
//"body=test&device_info=xxx&id=wxd930ea5d5a258f4f&nonce_str=ibuaiVcKdpRxkhJA&secret=dfsdfsfxxxxx"sign=hash_hmac("sha256",stringSignTemp,key).toUpperCase();
//"6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC30B23E0EE2496E54170DACD6"
第三步:最终得到最终发送的数据:
id: wxd930ea5d5a258f4f
device_info: xxx
body: test
nonce_str: ibuaiVcKdpRxkhJA (该参数是防重放用 ,每次请求随机生成一个 随机字符串)
key=xxxAndroid.3.14 (可放在header)
sign: 6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC30B23E0EE2496E54170DACD6(可放在header)

设计 服务端验签规则

第一步:将前端请求参数(除去key,sign后的)按照key=value的格式,并按照参数名ASCII字典序排序如下:
stringTemp="body=test&device_info=xxx&id=wxd930ea5d5a258f4f&nonce_str=ibuaiVcKdpRxkhJA";
第二步:根据key 去数据库查找对应的secret,拼接API密钥生成Sign:
stringSignTemp=stringTemp+"&secret=dfsdfsfxxxxx" serverSign=hash_hmac("sha256",stringSignTemp,key).toUpperCase();
第三步: 对吧后端生成的 sign 是否 与前端传递的sign值 是否一致
if(serverSign ==sign){//todo
}

URL请求加密 参数的sign签名 与验签相关推荐

  1. 数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)

    引言 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件.为现实网络安全化标准如今大部分的 B2B.B2C.P2P.O2O 等商业网站含有重要企业资料个人资料的信息资信网站 ...

  2. Java开发中的加密、解密、签名、验签,密钥,证书,这篇就够了,赶紧收藏起来

    OpenSSL和keytool 先说一下两个重要的工具 OpenSSL:OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库libssl.应用程序命令工具以及密码算法库libcrypt ...

  3. PHP 支付宝SDK加密与解密、签名与验签(含php原生写法)

    1.使用支付宝SDK,本次使用的SDK是老版 支付宝文档:https://opendocs.alipay.com/open/54/103419 首先下载或使用新上线的Web在线加密,生成应用私钥与应用 ...

  4. RSA加密、解密、签名、验签(验证签名)RSA算法原理

    转载链接:https://www.jianshu.com/p/8dc4a5f64e06 https://www.cnblogs.com/pcheng/p/9629621.html RSA原理:http ...

  5. .NET WebApi实现RSA加密与解密,签名与验签

    WebApi接口签名加密和验签 业务场景需求 生成RSA密钥对 报文根据规则进行排序 用请求方的私钥对报文签名 用接收方的公钥对报文加密 发送密文给接收方,用接收方的密钥解密 接收方对数据验签 关于C ...

  6. php中rsa加密及解密和签名及验签

    加密的内容长度限制为密钥长度少11位,如128位的密钥最多加密的内容为117个长度. 公钥加密 $public_content=file_get_contents(公钥路径); $public_key ...

  7. RSA加密、解密、签名、验签的原理及方法

    目录 一.RSA加密简介 二.公钥与私钥的理解 三.RSA加密解密 四.RSA签名和验证 五.加密的作用 六.两种不同的加密与解密 七.RSA加密.签名区别 八.RSA加密.签名的方法,代码例子如下: ...

  8. RSA加密、解密、签名、验签介绍

    参考链接:https://www.cnblogs.com/pcheng/p/9629621.html RAS简介 RSA加密是非对称加密,由一对秘钥进行完成加密解密,分别称为公钥和私钥,公钥加密,私钥 ...

  9. gmssl 生成SM2证书、加密、解密、签名、验签

    1. 生成SM2密钥对 gmssl ecparam -genkey -name sm2p256v1   -out sm2keypair.pem -text 2.查看SM2密钥对 gmssl ec -i ...

最新文章

  1. LeetCode N-ary Tree Level Order Traversal(bfs)
  2. 数据方面高可用方案简单总结
  3. 【Linux】【服务器】 CentOS7下安装Redis详细过程步骤
  4. antd 能自适应吗_自首要满足的条件有哪些,自首能从宽处罚吗?
  5. 华为端口聚合命令_华为交换机链路聚合配置命令
  6. mongodb报错一例
  7. 【POJ - 1050】To the Max (dp)
  8. 手机程序开发和测试关注点整理
  9. 王思聪吃热狗火了,程序员开发各种恶搞小程序!王校长:我不要脸的啊
  10. linux上的MySQL默认端口,linux下mysql 查看默认端口号与修改端口号方法
  11. git项目拉下来之后无法找到主加载类
  12. win10或者win11如何将中文用户名更改成英文用户名文件几乎无损(适合终端显示的中文名)亲测可用(操作有风险运行需谨慎)
  13. 题目:分别统计字符串中大写字母和小写字母的个数。
  14. mac安全性与隐私 不允许_隐私不仅仅是安全
  15. 思维导图(自我介绍)
  16. un7.2:IDEA中实现登录功能
  17. python中functools的partiaethod_Python中functools模块函数解析
  18. 群晖docker搭建印象笔记_群晖docker安装蚂蚁笔记安装教程
  19. 基于JAVA旅游景区预约管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  20. [案例4-2]饲养员喂养动物

热门文章

  1. 【Git】fatal Not a git repository or any of the parent direc
  2. 撰写SCI论文好用的免费工具(下) - 易智编译EaseEditing
  3. EOS源码分析(5)账号
  4. 云计算机的一大特征是什么,云计算最大的特征是什么?
  5. 计算机专业法语怎么读,法语实用资料计算机专业相关词汇(17页)-原创力文档...
  6. 社科院与杜兰大学金融管理硕士——承载梦想,带自己遨游世界的“风帆”
  7. 使用outlook 2007配置microsoft exchange邮箱方法步骤
  8. Python常用模块4-Python的datetime及time模块简介
  9. 上海考生:FRM证书在能享受什么福利?其他地区呢?
  10. 才女!厦大硕士毕业生文言文致谢走红网络,理科生的文学素养令人惊艳