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


相关文章
|
25天前
|
缓存 PHP 开发者
PHP中的自动加载机制及其优化方法
传统的PHP开发中,经常会遇到类文件加载繁琐、效率低下的情况,而PHP的自动加载机制能够很好地解决这一问题。本文将深入探讨PHP中的自动加载机制,介绍其原理及实现方式,并提出了一些优化方法,帮助开发者提升代码加载效率,提高应用性能。
|
1月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
4月前
|
JSON PHP 数据格式
PHP curl方法封装
PHP curl方法封装
31 0
|
4月前
|
安全 小程序 PHP
PHP代码审计(五)PHP代码审计方法与步骤
(1):获取到网站源码(这就是废话……) (2):将网站部署到你自己的环境中,能运行。 这里特殊说明一下我的习惯,我本地的环境与线上的环境基本上保持一致,这样在本地审计及线上部署的时候能发现更多的问题。不建议说是随便搭个环境能跑起来就行,这样不是很严谨。 (3):拿到源码之后,浏览大概的项目结构。
67 0
|
5天前
|
存储 SQL 缓存
记录如何用php做一个网站访问计数器的方法
创建简单网站访问计数器,可通过存储访问次数的文件或数据库。首先,创建`counter.txt`存储计数,然后在`counter.php`中编写PHP代码以读取、增加并显示计数,使用`flock`锁定文件避免并发问题。网页通过包含`counter.php`展示计数。对于高流量网站,推荐使用数据库确保原子性和并发处理能力,或利用缓存提升性能。注意,实际生产环境可能需更复杂技术防止作弊。
|
4月前
|
PHP
PHP显示报错提示,开启display_errors的方法
PHP显示报错提示,开启display_errors的方法
51 0
|
6月前
|
数据采集 定位技术 PHP
简单而高效:使用PHP爬虫从网易音乐获取音频的方法
网易音乐是一个流行的在线音乐平台,提供了海量的音乐资源和服务。如果你想从网易音乐下载音频文件,你可能会遇到一些困难,因为网易音乐对其音频资源进行了加密和防盗链的处理。本文将介绍一种使用PHP爬虫从网易音乐获取音频的方法,该方法简单而高效,只需几行代码就可以实现。
简单而高效:使用PHP爬虫从网易音乐获取音频的方法
|
3月前
|
安全 Linux 测试技术
PHP环境配置和验证
PHP环境配置和验证
31 0