admin 发表于 2025-5-25 18:14:06

Rsa加密和解密

代码:

<?php

namespace addons\carplate\library;

use think\Config;

class Rsa
{
    /**
   * Rsa加密解密
   * @params $data = json_encode(array('numberplate'=>'鲁B81Y01', 'carColor' => 0),JSON_UNESCAPED_UNICODE)
   */
    public function RSA_openssl($data, $operate = 'encode')
    {
      // 系统参数配置
      $site = Config::get("site");
      //RSA 公钥
      $rsa_public = $site['etc_pubkey'];
   
      //RSA 公钥加密
      if ('encode' == $operate) {
            $public_key = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($rsa_public, 64, "\n", true) . "\n-----END PUBLIC KEY-----";
            $key = openssl_pkey_get_public($public_key);
            if (!$key) {
                // echo '公钥不可用';
                return array('error_code' => 1001, 'error_msg' => '加密公钥不可用');
            }
            $return_en = openssl_public_encrypt($data, $crypted, $key);
            if (!$return_en) {
                // echo '公钥加密失败';
                return array('error_code' => 1002, 'error_msg' => '公钥加密失败');
            }
            return base64_encode($crypted);
      }
   
      //RSA 公钥解密
      if ('decode' == $operate) {
            $public_key = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($rsa_public, 64, "\n", true) . "\n-----END PUBLIC KEY-----";
            $key = openssl_pkey_get_public($public_key);
            if (!$key) {
                // echo '公钥不可用';
                return array('error_code' => 2001, 'error_msg' => '解密公钥不可用');
            }
            $return_de = openssl_public_decrypt(base64_decode($data), $decrypted, $key);
            if (!$return_de) {
                // echo '公钥解密失败';
                return array('error_code' => 2002, 'error_msg' => '公钥解密失败');
            }
            return $decrypted;
      }
    }
}

页: [1]
查看完整版本: Rsa加密和解密