php的rsa生成签名和验证签名方法

简介: php的rsa生成签名和验证签名方法
//处理参数
function MakeSign_Params( $arr ) {
    ksort( $arr );
    //按字典序排序参数
    $buff = '';
    foreach ( $arr as $k => $v ) {
        if ( $k != 'signValue'  ) {
            $buff .= $k . '=' . $v . '&';
        } 
    }
    $buff = trim( $buff, '&' );
    return $buff;
}
//生成 sha256WithRSA 签名
function getSign( $content ) {
    $filePath = 'test-pfx.pfx';
    if ( !file_exists( $filePath ) ) {
        return false;
    }
    $pkcs12 = file_get_contents( $filePath );
    if ( openssl_pkcs12_read( $pkcs12, $certs, '000000' ) ) {
        $pkey = $certs['pkey'];
        $pi_key =  openssl_pkey_get_private($pkey);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id,别名函数openssl_get_privatekey
        if(!$pi_key){
            //var_dump($pi_key);
            return false;
        }
        //print_r($certs); 可以查看里面是啥
        //根据实际情况键值可能不同
        //最后一个参数签名算法还有其他值OPENSSL_ALGO_SHA1
        openssl_sign( $content, $signature, $pkey, 'SHA256' );
        openssl_free_key($pi_key);
        $sign = base64_encode( $signature );
        return $sign;
    }
}
//验证 sha256WithRSA 签名
function verify( $content, $sign ) {
    $publicKey = file_get_contents( 'xdzf_cfca_prd.cer' ); //验证接口方传过来数据用使用这个公钥,使用这个。
    $pu_key = openssl_pkey_get_public($publicKey);//这个函数可用来判断公钥是否是可用的,可用返回资源id Resource id 
    if(!$pu_key){
        //var_dump( $pu_key);
        return false;
    }
    $key = openssl_get_publickey( $publicKey ); //返回资源型Resource id #9,和上面函数openssl_pkey_get_public,效果一致
    $ok = openssl_verify( $content, base64_decode($sign) , $key, 'SHA256' );
    openssl_free_key( $key);
    return $ok;
}


相关文章
|
2月前
|
安全 API PHP
PHP中实现CORS跨域资源共享的方法
通过这种方式,你可以在PHP应用中灵活地实现CORS,以支持跨域Web应用的需求。
205 15
|
8月前
|
Ubuntu PHP Apache
在Ubuntu系统中为apt的apache2编译PHP 7.1的方法
以上就是在Ubuntu系统中为apt的apache2编译PHP 7.1的方法。希望这个指南能帮助你成功编译PHP 7.1,并在你的Apache服务器上运行PHP应用。
202 28
|
8月前
|
PHP 开发者
PHP数据验证方法:如何检查一个字符串是否是email格式。
以上就是关于PHP如何检查一个字符串是否是email格式的全部内容。希望你在代码书写旅途中,能找到你的北斗星——简洁、高效、可靠的代码验证方式。让我们共同见证PHP的强大和丰富多彩!
226 16
|
9月前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
231 16
|
JSON PHP 数据格式
PHP解析配置文件的常用方法
INI文件是最常见的配置文件格式之一。
195 12
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
658 4
|
前端开发 PHP JavaScript
php非空验证
  我想说这种方法是不是很常用的非空验证,现在的普遍使用的是javascript来验证非空,但是作为学习php的一些知识点,还是可以看看的。 先来看看commit.php中的方法
756 0
|
3月前
|
关系型数据库 MySQL PHP
PHP和Mysql前后端交互效果实现
本文介绍了使用PHP连接MySQL数据库的基本函数及其实现案例。内容涵盖数据库连接、选择数据库、执行查询、获取结果等常用操作,并通过用户登录和修改密码的功能实例,展示了PHP与MySQL的交互过程及代码实现。
300 0
PHP和Mysql前后端交互效果实现
|
8月前
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
412 17
|
9月前
|
关系型数据库 MySQL PHP
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
260 18