当前位置: 首页 > news >正文

php之 进行签名公钥、私钥(SHA1withRSA签名)

参考网址
https://blog.csdn.net/veloi/article/details/112143482

签名算法规则
第一步
设所有发送或者接收到的Json数据的第一级为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
如果第一级值是对象或者数组,则值是对象/数组的字符串
第二步
在第一步中拼接成字符串stringA进行RSA SHA1withRSA 签名运算,得到sign值signValue

生成签名

public function getSign($data){ksort($data); // 1                                                                                  参数$content = urldecode(http_build_query($data));// 2// $content = "";// foreach ($data as $key => $val) {//     $content = $content .$key .'='. $val.'&';// }// $content = substr($content, 0, -1);
// var_dump($content);//商户私钥// 1// $str = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCGYjwXlOhNDeN1TIT97LiqRmxY3MNmdG9NjuZwYgBMFB1lFOEHh6hj8ncQcqw+6SFozcXDB3dv8jjtIuESeHndERm1k4n9/5QwO7Pk3PzHFyNaySF9XpRj41B7qlGkQIErmUvp0RjGqtXFG39XM1wLnieUYI/baJRT3Vt1xLXQjAmyJXIlo5Bvv289BvDvt1MlvHOBN6f5s2WQRSMWjpVQt0Vnx5iz+rUqX4mJv8zkioMqShGscXCvA0m99Ir0LlnqpKV5JI1uvHw5TRUiAtsiUHDjG1xW6MPAgMBAAECggEAEbyhhdNHnfP5U6AX5ZP7A65r2oa426r+jdQQokCtHV2CS7cnxGCpXxe/k1IvXdZTbIvMUGOJ5iKoVNRHtLJmE0GQjSC+E9tdRBoyzYhGMKf/1lX9Ydqas5PaErO71j0CVVZRDpaADxTgH35gWq2xoWL1ojwqD6pspNXBalTuIhmIpYS6JUY4XNFQAdwNiXw+j8UpIOhAHdVf/f0BAqZvvuLlVCMkmfzzUoVpCFFROrF9lnJ4NUUIOu63M9RhQLGBHAdWWKbKuFLwCSYl0Q9rfJwK2VE/+vNS/RsJSilJIm4Q4wOYscDCq7gdchNwGfwtd2jp1f6yQghTYiR86a19Id+nh2C+aW4IandmbtdRiOF3ccdFHmcXF7pAXqn/EULM4lFPvD9ZL8qwKBgQDKg71B/w4H4tejPXgXYsx9HCXRpV1ETu3GyMjspeiZIKHr4OwPjIMzpAqVk7JdWEtVMyKInk+4YS9Ypk9eoKLlRZOBLNimybsdTneUGHGRQeljAsJIamk3yKOkurMO/pSn080KL+Lx5hA4pnAgIUv8FHU3OVpmGhYQXuVc+B1EIQKBgBW3Q1c9wReEzXupt5OamlCWKEBRXlA3Gqlils6IGMRXli1z+KPp0Xdp27+++eaTj4Cp5WaX74UgyemZCeKXTfRMTn2QzVU+t5aFN4B4MZ1O2eDp2wYnmZkfApMNFCYZwlAoGANEwIvoG0wVu6uX0MjYwK/ABHNgdVdBF5SP7g7HnrIVxdlX7v3riHh+p0zyZ47cgtMGGdD61J2gmDWTU26LD6GMlva5MHaNysXsy2I2iE6OdJRxGzcZxoMntKvippTzFtou31Zvv3BSvYiKkMjb18eZ4rFmbr9ujs2TObSe9JqPI=";// $str = chunk_split($str, 64, "\n");// $key = "-----BEGIN RSA PRIVATE KEY-----\n$str-----END RSA PRIVATE KEY-----\n";// 2$key = "-----BEGIN RSA PRIVATE KEY-----\n" .wordwrap("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCGYjwXlOhNDeN1TIT97LiqRmxY3MNmdG9NjuZwYgBMFB1lFOEHh6hj8ncQcqw+6SFozcXDB3dv8jjtIuESeHndERm1k4n9yx3gI7gEHbSeV0MDi9wB5MnnsGDLE+dvXOMgCptX4pnxWS1Ktqh88/5QwO7Pk3PzHFyNaySF9XpRj41B7qlGkQIErmUvp0RjGqtXFG39XM1wLnieUYI/baJRT3Vt1xLXQjAmyJXIlo5Bvv28Ir0LlnqpKV5JI1uvHw5TRUiAtsiUHDjG1xW6MPAgMBAAECggEAEbyhhdNHnfP5U6AX5ZP7A65r2oa426r+jdQQokCtHV2CS7cnxGCpXxe/k1IvXdZTbIvMUGOJ5iKoVNRHtLJmE0GQjSC+E9tdRBoyzYhGMKf/1lX9Ydqas5PaErO71j0CVVZRDpaADxTgH35gWq2xoWL1ojwqD6pspNXBalTuIhmIpYS6JUY4XNFQAdwNiXw+j8UpIOhAHdVf/f0BAqZvvuLlVCMkmfzzUoVpCFFROrF9lnJ4NUUIOu63M9RhQLGBHAdWWKbKuFLwCSYl0Q9rfJwK2VE/+vNS/RsJSilJIm4Q4wOYscDCq7tdRiOF3ccdFHmcXF7pAXqn/EULM4lFPvD9ZL8qwKBgQDKg71B/w4H4tejPXgXYsx9HCXRpV1ETu3GyMjspeiZIKHr4OwPjIMzpAqVk7JdWEtVMyKInk+4YS9Ypk9eoKLlRZOBLNimybsdTneUGHGRQeljAsJIamk3yKOkurMO/pSn080KL+Lx5hA4pnAgIUv8FHU3OVpmGhYQXuVc+B1EIQKBgBW3Q1c9wReEzXupt5OamlCWKEBRXlA3Gqlils6IGMRXli1z+KPp0Xdp27+++eaTj4Cp5WaX74UgyemZCeKXTfRMTnGBCySc3lQtz2u1j8VkGh9MvptzFJLQU0rdew0Ysnpy2QzVU+t5aFN4B4MZ1O2eDp2wYnmZkfApMNFCYZwlAoGANEwIvoG0wVu6uX0MjYwK/ABHNgdVdBF5SP7g7HnrIVxdlX7v3riHh+p0zyZ47cgtMGGdD61J2gmDWTU26LD6GMlva5MHaNysXsy2I2iE6OdJRxGzcZxoMntKvippTzFtou31Zvv3BSvYiKkMjb18eZ4rFmbr9ujs2TObSe9JqPI=", 64, "\n", true) ."\n-----END RSA PRIVATE KEY-----";$private_key = openssl_get_privatekey($key);// $private_key = openssl_pkey_get_private($key);//加载密钥// 使用私钥生成签名$signature = '';openssl_sign($content,$signature,$private_key,OPENSSL_ALGO_SHA1);//生成签名// openssl_sign($content,$signature,$private_key,'SHA1');//生成签名$encryptedData = base64_encode($signature);openssl_free_key($private_key);return $encryptedData;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • oracle(19c)用户管理
  • pytorch学习笔记3 tensor索引和切片
  • 如何使用哔哩哔哩下载与缓存视频?
  • 【无标题】图像增强技术:直方图均衡化、拉普拉斯算子、对数变换与伽马变换
  • Markdown语法学习
  • 同一台机器上,github多账号操作
  • HPC高性能计算平台
  • 体验 Whisper ,本地离线部署自己的 ASR 语音识别服务
  • 【第六章】测试理论与方法 - 灰盒测试的深入解析
  • SpringBoot 集成原生 Servlet、Filter、Listener
  • upload-labs漏洞靶场~文件上传漏洞
  • 【优秀python案例】基于python爬虫的深圳房价数据分析与可视化实现
  • Leetcode3227. 字符串元音游戏
  • 国产版Sora复现——智谱AI开源CogVideoX-2b 本地部署复现实践教程
  • C++速学day1
  • 5、React组件事件详解
  • angular组件开发
  • ECS应用管理最佳实践
  • HTTP中GET与POST的区别 99%的错误认识
  • input的行数自动增减
  • JavaScript 基本功--面试宝典
  • laravel5.5 视图共享数据
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • React系列之 Redux 架构模式
  • text-decoration与color属性
  • 闭包--闭包作用之保存(一)
  • 电商搜索引擎的架构设计和性能优化
  • 构造函数(constructor)与原型链(prototype)关系
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 聊聊sentinel的DegradeSlot
  • 前端知识点整理(待续)
  • 我建了一个叫Hello World的项目
  • 学习笔记:对象,原型和继承(1)
  • 找一份好的前端工作,起点很重要
  • 自动记录MySQL慢查询快照脚本
  • ​什么是bug?bug的源头在哪里?
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • #QT(一种朴素的计算器实现方法)
  • (1)Android开发优化---------UI优化
  • (SpringBoot)第七章:SpringBoot日志文件
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (安卓)跳转应用市场APP详情页的方式
  • (二)构建dubbo分布式平台-平台功能导图
  • (分布式缓存)Redis分片集群
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (函数)颠倒字符串顺序(C语言)
  • (剑指Offer)面试题34:丑数
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (四)汇编语言——简单程序
  • (一)kafka实战——kafka源码编译启动
  • (转)nsfocus-绿盟科技笔试题目
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ***通过什么方式***网吧