什么是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 ~


IT小圈儿

PHP RSA2 签名算法相关推荐

  1. RSA和RSA2签名算法区别

    新建应用只支持RSA2签名方式,目前已使用RSA签名方式的应用仍然可以正常调用接口,详情请见开放平台接口签名方式升级公告. 什么是数字签名? 一个很好的说明文档可以参考What is a Digita ...

  2. 浅谈RSA2加密原理

    RSA2加密解密原理分析 一.相关定义 RSA2签名 加密与签名 摘要 非对称加密 RSA和RSA2签名算法区别 PKCS1与PKCS8格式的小知识 签名类型划分 国密 二.加密原理 1.求幂再求余 ...

  3. python支付系统开发,python支付整合开发包

    轻量级支付方式整合集成,实现支付与业务完全剥离,快速简单完成支付模块的开发 特性 屏蔽支付方式之间接入API和数据结构的差异,统一API和数据结构 支持支付类型横向扩展 统一异常处理 支持支付方式及功 ...

  4. html wap php,wap.php

    header('Content-type:text/html; Charset=utf-8'); /*** 请填写以下配置信息 ***/ $appid = 'xxxxx'; //https://ope ...

  5. 西米支付:支付宝/微信支付/银联支付通道的接入介绍

    本文以电脑网站支付为例,着重对第三方支付通道的接入进行了分析,包括支付宝支付接入.微信支付接入及银联支付接入. 1.支付宝支付接入 支付宝支付能力主要有当面付.刷脸付.App支付.手机网站支付.电脑网 ...

  6. php实现支付宝扫码付

    页面效果 用支付宝扫一下,会弹出支付的二维码 申请开发应用 可使用公司营业执照或个体工商户申请 支付宝开放平台 https://open.alipay.com/ 要做扫码支付这个必不可少 因为没有签约 ...

  7. php实现支付宝二维码支付

    下面是代码 <?php header('Content-type:text/html; Charset=utf-8'); /*** 请填写以下配置信息 ***/ $appid = '****'; ...

  8. 支付宝支付之“单笔转账到支付宝账户接口”的调用(生成签名、上传应用公钥、下载SDK、接口调用、报错自动排查、查看错误码)

    支付宝接口调用 "单笔转账到支付宝账户"的接口调用,一般涉及到下面几个知识点 1.生成签名 在使用支付宝接口的时候,需要使用支付宝的签名,这里需要使用支付宝的RSA生成工具. 关于 ...

  9. 支付开发(七)----支付宝开发之手机网站支付(H5支付)

    其实官方的文档中:https://docs.open.alipay.com/203 介绍的已经很详细了,我就实地的看文档操作了一遍,具体步骤如下: 一.创建应用 流程如下: 首先要有支付宝开放平台: ...

  10. 支付宝:APP支付接口2.0(alipay.trade.app.pay)

    本章是跟支付宝进行签约对接商户服务端(也就是自行开发的JAVA后端),做此记录. 文献基本都来源于支付宝,详情请看支付宝官方文档:APP支付 目录 系统交互图 服务端demo 配置参数 获取APPID ...

最新文章

  1. nginx php-fpm 运行原理
  2. 11.条件语句if,switch
  3. 因为 Java 和 Php 在获取客户端 cookie 方式不同引发的 bug
  4. ACM试题 - 另一种阶乘问题
  5. Tomcat中的连接器是如何设计的
  6. PHP目前比较常见的五大运行模式
  7. 网络编程之 字节序和深入理解bind()函数
  8. 叙述计算机网络的分类与拓扑结构,计算机的网络中有线网络和无线网络最主要的区别是()。...
  9. amd cpu不能在cmd环境下运行java代码_Golang安装与环境搭建并在VSCode里面输出HelloWord...
  10. wind金融数据接口python_Wind——接口python
  11. 将自己的图片做成cityscape格式(自用)
  12. 【系统】右键桌面图标,转圈后,资源管理器就崩溃,桌面就重新刷新
  13. HDU - 1548 A strange lift
  14. 【LeetCode每日一题】【2021/12/8】689. 三个无重叠子数组的最大和
  15. 最高效寻找重复数据,如何高效率的查找到数组中的重复值
  16. Pinia:Vue3.js的状态管理器
  17. 4种CSS文字竖排方法
  18. 用计算机写作与用笔写作,电脑写作vs手写作文,技术真能提高写作成绩吗?
  19. Linux内核的五大模块
  20. Linux下cuda9.1安装Pytorch和Torchvision|简记

热门文章

  1. vivox6Android版本,vivo X6的手机系统是什么?vivo X6能升级安卓5.0吗?
  2. winform耗时代码处理,仿win10加载动画Loading(等待界面)
  3. C#将数据库中的数据绑定到dataGridView
  4. PHP使用redis设置锁
  5. php正则验证邮箱、手机号、姓名、身份证、特殊符号等
  6. Matlab系列教程_数值计算_求和(积)_求累加(积)
  7. jk-fourm.php,JK车头灯与我的新年期望(已更新完毕)
  8. IDEA回到光标的上一次位置
  9. 旁边一位员工天天跟别人聊天,主管都不敢管,那你当什么主管
  10. 软件基本功:数组赋值,一定要对齐