PHP RSA2 签名算法

作者: 程序员祝融 | 来源:发表于2017-05-24 22:46 被阅读192次

博主在项目中遇到PHP签名算法,找了很多资料,现在总结下。

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

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

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

RSA类

<?php
/**
 * Created by PhpStorm.
 * User: webff
 * Date: 2017/5/12
 * Time: 20:03
 */
class Rsa2
{
    private static $PRIVATE_KEY ="私钥内容";
    private static $PUBLIC_KEY  ="公钥内容";
    /**
     * 获取私钥
     * @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 = '')
    {
      //  var_dump(self::getPrivateKey());die;
        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调用

$rsa2 = new Rsa2();
$data = 'mydata'; //待签名字符串
$strSign = $rsa2->createSign($data);      //生成签名
$is_ok = $rsa2->verifySign($data, $strSign); //验证签名

相关文章

  • PHP RSA2 签名算法

    博主在项目中遇到PHP签名算法,找了很多资料,现在总结下。 RSA2是在原来SHA1WithRSA签名算法的基础上...

  • PHP RSA2 签名算法

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

  • PHP-RSA2签名

    什么是RSA2:RSA2就是在原来SHA1WithRSA签名算法的基础上,新增了支持SHA256WithRSA的签...

  • 支付宝接口加签方式说明

    支付宝签名采用的是RSA算法,17年之后它提供两种形式,一种叫做RSA,一种叫做RSA2,实际上只是将算法加签的字...

  • python实现RSA2签名

    签名过程 签名生成的通用步骤如下: 将所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASC...

  • BOS签名算法的PHP demo

    BOS签名算法的PHP demo 为什么要写这篇文档,大多数的用户肯定深有体会,就是BCE的那套API文档太晦涩了...

  • 区块链开发——数字签名扩展 #C02

    本篇为资料整理 数字签名算法 常见的数字签名算法主要有RSA、DSA、ECDSA三种。 RSA数字签名算法 RSA...

  • IOTA 基石 - ISS 签名算法详解

    一、概要 IOTA 消息签名 方案使用的是Winternitz一次签名算法(WOTS),它是一种hash 签名算法...

  • 4.2 RSA数字签名技术

    数字签名技术 - RSA数字签名技术 RSA算法不仅是非对称加密算法,也是数字签名算法中的主力军,和MD、SHA系...

  • 加密算法 IPFS

    加密算法 Ed25519: 数字签名算法 生成公私钥对,可做签名 验证等。 Salsa20: 流加密算法

网友评论

    本文标题:PHP RSA2 签名算法

    本文链接:https://www.haomeiwen.com/subject/xxamxxtx.html