RSA2是啥?PHP-RSA2签名验证怎么实现?

编程之家收集整理的这篇文章主要介绍了RSA2是啥?PHP-RSA2签名验证怎么实现?编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

RSA2是啥?PHP-RSA2签名验证怎么实现?
什么是RSA2?

RSA2是在原来SHA1WithRSA签名算法的基础上,新增了支持SHA256WithRSA的签名算法。

该算法在摘要算法上比SHA1WithRSA有更强的安全能力。

SHA1WithRSA的签名算法会继续提供支持,但为了您的应用安全,强烈建议使用SHA256WithRSA的签名算法。

开发平台算法名称标准签名算法名称备注
RSA2SHA256WithRSA(强烈推荐使用),强制要求RSA密钥的长度至少为2048
RSASHA1WithRSA对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视频教程

总结

以上是编程之家为你收集整理的RSA2是啥?PHP-RSA2签名验证怎么实现?全部内容,希望文章能够帮你解决RSA2是啥?PHP-RSA2签名验证怎么实现?所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

PHP文章

“Ruby on Rails已死”言论甚嚣尘上后的三年,GitLab还没放弃它!
三分钟带各位揭秘黑客究竟是什么,以及想要成为黑客都需要具备哪些能力?
菜刀流量特征(最开始是明文传输,后来采用base64加密):PHP类WebShell链接流量如下图:第一:“eval”,eval函数用于执行传递的攻击payload,这是必不可少的;第二:(base64_decode($_POST[z0])),(base64_decode($_POST[z0]))将攻击payload进行Base64解码,因为菜刀默认是使用Base64编码,以避免被检测;第三:&z0=QGluaV9zZXQ...,该部分是传递攻击payload,此参数z0对应$_
一、PHP开发 登录页面1.数据库搭建先在mysql数据库中创建一个test数据库login表:设置如下几个字段:id : 它是唯一的,类型为 int ,并选择主键。uesrname : 用户名,类型为 varchar, 长度为30。password : 密码,类型为 varchar, 长度为30。添加一个用于测试的用户名和密码插入了一个数据username为22222; password为222222.验证码发表一个产生png图片验证码的基本图像:1、产生一张png的图片..
文章目录前言第一章 PHP语言学习介绍1.1 PHP部署安装环境1.2 PHP代码工具选择第二章 PHP代码基本语法2.1 PHP函数知识介绍2.2 PHP常量变量介绍2.2.1 PHP变量知识:2.2.2 PHP常量知识:2.3 PHP注释信息介绍2.4 PHP数据类型介绍2.4.1 整形数据类型2.4.2 布尔数据类型2.4.3 字符串数据类型2.4.4 浮点型数据类型2.4.5 PHP数据类型之查看和判断数据类型2.5 PHP流程控制语句2.6 PHP算数运算方法2.6.1 PHP程序自加自减运算2.
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、文件目录二、管理员界面相关代码(PHP+CSS)1.admin.php2.admin.css三、增加功能四、删除功能(delete.php)五、多选删除功能(checkdelete.php)六、修改功能(insert.php)七、查询功能(search.php)八、数据库内容前言提示:本文采用PHP对数据库进行操作:本文就介绍了PHP实现对MySQL数据库的增删改查操作基础内容。提示:以下是本篇文章正文内容,下面
要求:完成以下页面的制作1、login.php:登录页面,存在权限类别(user和admin),登录成功后重定向到admin.php/user.php。2、admin.php:admin用户登录后访问的页面,只有admin用户登录后能够访问,若为非admin权限用户需重定向到登录页面。3、user.php:user用户登录后访问的页面,只有user用户登录后能够访问,若为非user权限用户需重定向到登录页面。4、logout.php:退出登录,退出登录后将重定向到登录页面。5、reg.
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注