PHP RSA2 签名算法
什么是RSA2?
RSA2是在原来SHA1WithRSA签名算法的基础上,新增了支持SHA256WithRSA的签名算法。
该算法在摘要算法上比SHA1WithRSA有更强的安全能力。
SHA1WithRSA的签名算法会继续提供支持,但为了您的应用安全,强烈建议使用SHA256WithRSA的签名算法。
开发平台算法名称 | 标准签名算法名称 | 备注 |
---|---|---|
RSA2 | SHA256WithRSA | (强烈推荐使用),强制要求RSA密钥的长度至少为2048 |
RSA | SHA1WithRSA | 对RSA密钥的长度不限制,推荐使用2048位以上 |
那些公司在使用?
一些大型公司的开发平台,比如支付宝、新浪微博。
创建私钥、公钥
//生成原始 RSA私钥文件
openssl genrsa -out rsa_private_key.pem 1024
//将原始 RSA私钥转换为 pkcs8格式
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
//生成RSA公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
//我们将私钥rsa_private_key.pem用在服务器端,公钥发放给android跟ios等前端。
PHP-RSA2签名验证
class Rsa2
{private static $PRIVATE_KEY = 'rsa_private_key.pem 内容';private static $PUBLIC_KEY = 'rsa_public_key.pem 内容';/*** 获取私钥* @return bool|resource*/private static function getPrivateKey(){$privKey = self::$PRIVATE_KEY;return openssl_pkey_get_private($privKey);}/*** 获取公钥* @return bool|resource*/private static function getPublicKey(){$publicKey = self::$PUBLIC_KEY;return openssl_pkey_get_public($publicKey);}/*** 创建签名* @param string $data 数据* @return null|string*/public function createSign($data = ''){if (!is_string($data)) {return null;}return openssl_sign($data,$sign,self::getPrivateKey(),OPENSSL_ALGO_SHA256) ? base64_encode($sign) : null;}/*** 验证签名* @param string $data 数据* @param string $sign 签名* @return bool*/public function verifySign($data = '', $sign = ''){if (!is_string($sign) || !is_string($sign)) {return false;}return (bool)openssl_verify($data,base64_decode($sign),self::getPublicKey(),OPENSSL_ALGO_SHA256);}
}复制代码
PHP 调用
require_once "Rsa2.php";
$rsa2 = new Rsa2();$data = 'my data'; //待签名字符串$strSign = $rsa2->createSign($data); //生成签名
var_dump($strSign);$is_ok = $rsa2->verifySign($data, $sign); //验证签名
var_dump($is_ok);复制代码
相关推荐:
PHP 使用非对称加密算法 (RSA)
一起来聊聊数据的加密技术
Thanks ~
PHP RSA2 签名算法相关推荐
- RSA和RSA2签名算法区别
新建应用只支持RSA2签名方式,目前已使用RSA签名方式的应用仍然可以正常调用接口,详情请见开放平台接口签名方式升级公告. 什么是数字签名? 一个很好的说明文档可以参考What is a Digita ...
- 浅谈RSA2加密原理
RSA2加密解密原理分析 一.相关定义 RSA2签名 加密与签名 摘要 非对称加密 RSA和RSA2签名算法区别 PKCS1与PKCS8格式的小知识 签名类型划分 国密 二.加密原理 1.求幂再求余 ...
- python支付系统开发,python支付整合开发包
轻量级支付方式整合集成,实现支付与业务完全剥离,快速简单完成支付模块的开发 特性 屏蔽支付方式之间接入API和数据结构的差异,统一API和数据结构 支持支付类型横向扩展 统一异常处理 支持支付方式及功 ...
- html wap php,wap.php
header('Content-type:text/html; Charset=utf-8'); /*** 请填写以下配置信息 ***/ $appid = 'xxxxx'; //https://ope ...
- 西米支付:支付宝/微信支付/银联支付通道的接入介绍
本文以电脑网站支付为例,着重对第三方支付通道的接入进行了分析,包括支付宝支付接入.微信支付接入及银联支付接入. 1.支付宝支付接入 支付宝支付能力主要有当面付.刷脸付.App支付.手机网站支付.电脑网 ...
- php实现支付宝扫码付
页面效果 用支付宝扫一下,会弹出支付的二维码 申请开发应用 可使用公司营业执照或个体工商户申请 支付宝开放平台 https://open.alipay.com/ 要做扫码支付这个必不可少 因为没有签约 ...
- php实现支付宝二维码支付
下面是代码 <?php header('Content-type:text/html; Charset=utf-8'); /*** 请填写以下配置信息 ***/ $appid = '****'; ...
- 支付宝支付之“单笔转账到支付宝账户接口”的调用(生成签名、上传应用公钥、下载SDK、接口调用、报错自动排查、查看错误码)
支付宝接口调用 "单笔转账到支付宝账户"的接口调用,一般涉及到下面几个知识点 1.生成签名 在使用支付宝接口的时候,需要使用支付宝的签名,这里需要使用支付宝的RSA生成工具. 关于 ...
- 支付开发(七)----支付宝开发之手机网站支付(H5支付)
其实官方的文档中:https://docs.open.alipay.com/203 介绍的已经很详细了,我就实地的看文档操作了一遍,具体步骤如下: 一.创建应用 流程如下: 首先要有支付宝开放平台: ...
- 支付宝:APP支付接口2.0(alipay.trade.app.pay)
本章是跟支付宝进行签约对接商户服务端(也就是自行开发的JAVA后端),做此记录. 文献基本都来源于支付宝,详情请看支付宝官方文档:APP支付 目录 系统交互图 服务端demo 配置参数 获取APPID ...
最新文章
- nginx php-fpm 运行原理
- 11.条件语句if,switch
- 因为 Java 和 Php 在获取客户端 cookie 方式不同引发的 bug
- ACM试题 - 另一种阶乘问题
- Tomcat中的连接器是如何设计的
- PHP目前比较常见的五大运行模式
- 网络编程之 字节序和深入理解bind()函数
- 叙述计算机网络的分类与拓扑结构,计算机的网络中有线网络和无线网络最主要的区别是()。...
- amd cpu不能在cmd环境下运行java代码_Golang安装与环境搭建并在VSCode里面输出HelloWord...
- wind金融数据接口python_Wind——接口python
- 将自己的图片做成cityscape格式(自用)
- 【系统】右键桌面图标,转圈后,资源管理器就崩溃,桌面就重新刷新
- HDU - 1548 A strange lift
- 【LeetCode每日一题】【2021/12/8】689. 三个无重叠子数组的最大和
- 最高效寻找重复数据,如何高效率的查找到数组中的重复值
- Pinia:Vue3.js的状态管理器
- 4种CSS文字竖排方法
- 用计算机写作与用笔写作,电脑写作vs手写作文,技术真能提高写作成绩吗?
- Linux内核的五大模块
- Linux下cuda9.1安装Pytorch和Torchvision|简记
热门文章
- vivox6Android版本,vivo X6的手机系统是什么?vivo X6能升级安卓5.0吗?
- winform耗时代码处理,仿win10加载动画Loading(等待界面)
- C#将数据库中的数据绑定到dataGridView
- PHP使用redis设置锁
- php正则验证邮箱、手机号、姓名、身份证、特殊符号等
- Matlab系列教程_数值计算_求和(积)_求累加(积)
- jk-fourm.php,JK车头灯与我的新年期望(已更新完毕)
- IDEA回到光标的上一次位置
- 旁边一位员工天天跟别人聊天,主管都不敢管,那你当什么主管
- 软件基本功:数组赋值,一定要对齐