PHP实现RSA签名和验签

本文介绍了一个使用PHP实现的RSA加密算法类,详细展示了如何利用私钥进行数据加密和签名,以及如何利用公钥进行数据解密和签名验证的过程。文中还提供了获取私钥和公钥文件路径的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php 

define('ICLOD_CERT_PATH',dirname(__FILE__).'/xx_pri.key' ); //私钥文件
define('ICLOD_CERT_PUBLIC_PATH',dirname(__FILE__).'/xx_pub.key' );//公钥文件

class RSA{

 /**

     公钥用于对数据进行加密,私钥用于对数据进行解密。
     私钥用于对数据进行签名,公钥用于对签名进行验证
     * @access public
     * @param 签名算法
     * @param $data
     * @return string
     */
    public function sign($data){
        $priKey = file_get_contents(ICLOD_CERT_PATH);
        $res = openssl_get_privatekey($priKey);
        openssl_sign($data, $sign, $res);
        openssl_free_key($res);
        //base64编码
        $sign = base64_encode($sign);
        return $sign;
    }

    /**
     * @access public
     * @param 加密算法
     * @param $data
     * @return string
     */
    public function rsa($data){
        $encryptData="";
        $priKey = file_get_contents(ICLOD_CERT_PATH);
        $res=openssl_get_privatekey($priKey);
        $result =openssl_private_encrypt($data, $encryptData, $res,OPENSSL_PKCS1_PADDING);
        openssl_free_key($res);
        return base64_encode($encryptData);
    }
 /**
     * @access public
     * @param 解密算法
     * @param $data
     * @return string
     */
    public function decryptRSA($data){
        $decryptData ='';
        $publickey =file_get_contents(ICLOD_CERT_PUBLIC_PATH);
        $res = openssl_pkey_get_public($publickey);
        $result=openssl_public_decrypt(base64_decode($data), $decryptData, $res);
        return $decryptData;
    }

 /**
     * @access public
     * @param 验签
     * @param $data
     * @return json
     */
    public function verify($data){
        $publickey =file_get_contents(ICLOD_CERT_PATH);
        $res=openssl_get_publickey($publickey);
        $result = (bool)openssl_verify($data['signedValue'], base64_decode($data['sign']), $res);
        openssl_free_key($res);
        return $result;
    }

}

 

公私钥详情:https://www.cnblogs.com/wt645631686/p/8390936.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值