首页后端开发PHP什么是RSA2,如何实现PHP-RSA2签名验证

什么是RSA2,如何实现PHP-RSA2签名验证

时间2024-03-22 11:39:03发布访客分类PHP浏览1349
导读:这篇文章给大家分享的是“什么是RSA2,如何实现PHP-RSA2签名验证”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“什么是RSA2,如何实现PHP-RSA2签名验...
这篇文章给大家分享的是“什么是RSA2,如何实现PHP-RSA2签名验证”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“什么是RSA2,如何实现PHP-RSA2签名验证”吧。

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);
    

关于“什么是RSA2,如何实现PHP-RSA2签名验证”的内容就介绍到这,感谢各位的阅读,相信大家对什么是RSA2,如何实现PHP-RSA2签名验证已经有了进一步的了解。大家如果还想学习更多知识,欢迎关注网络,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 什么是RSA2,如何实现PHP-RSA2签名验证
本文地址: https://pptw.com/jishu/650452.html
mysql数据库的左连接,右连接,内链接有何区别 apriori算法是什么,如何写Python代码实现Apriori算法

游客 回复需填写必要信息