码迷,mamicode.com
首页 > Web开发 > 详细

php/js/linux: js加密(rsa公钥加密) php解密(rsa私钥解密)

时间:2017-11-10 20:31:44      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:div   zip   示例   nbsp   git   com   except   tail   bad   

php/js/linux: js加密(rsa公钥加密) php解密(rsa私钥解密)

 一:

js rsa 插件

https://github.com/UFO0001/WX_RSA

  或者:

https://files.cnblogs.com/files/achengmu/WX_RSA-master.zip

  

二:

代码所在的服务器生成:private_key/public_key 两个文件

php代码如下:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/11/10
 * Time: 15:29
 */

class RsaLogic {
    private $public_key = ‘‘; //公密钥
    private $private_key = ‘‘; //私密钥
    private $public_key_resource = ‘‘; //公密钥资源
    private $private_key_resource = ‘‘; //私密钥资源
    /**
     * 架构函数
     * @param [string] $public_key_file  [公密钥文件地址]
     * @param [string] $private_key_file [私密钥文件地址]
     */
    public function __construct($public_key_file,$private_key_file) {
        try {
            if(!file_exists($public_key_file) || !file_exists($private_key_file)) {
                throw new Exception(‘key file no exists‘);
            }
            if (false == ($this->public_key = file_get_contents($public_key_file)) || false == ($this->private_key = file_get_contents($private_key_file))) {
                throw new Exception(‘read key file fail‘);
            }
            if(false == ($this->public_key_resource = $this->is_bad_public_key($this->public_key)) || false == ($this->private_key_resource = $this->is_bad_private_key($this->private_key))) {
                throw new Exception(‘public key or private key no usable‘);
            }

        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
    private function is_bad_public_key($public_key) {
        return openssl_pkey_get_public($public_key);
    }
    private function is_bad_private_key($private_key) {
        return openssl_pkey_get_private($private_key);
    }
    /**
     * 生成一对公私密钥 成功返回 公私密钥数组 失败 返回 false
     */
    public function create_key() {
        $res = openssl_pkey_new();
        if($res == false) return false;
        openssl_pkey_export($res, $private_key);
        $public_key = openssl_pkey_get_details($res);
        return array(‘public_key‘=>$public_key["key"],‘private_key‘=>$private_key);
    }
    /**
     * 用私密钥加密
     */
    public function private_encrypt($input) {
        openssl_private_encrypt($input,$output,$this->private_key_resource);
        return base64_encode($output);
    }
    /**
     * 解密 私密钥加密后的密文
     */
    public function public_decrypt($input) {
        openssl_public_decrypt(base64_decode($input),$output,$this->public_key_resource);
        return $output;
    }
    /**
     * 用公密钥加密
     */
    public function public_encrypt($input) {
        openssl_public_encrypt($input,$output,$this->public_key_resource);
        return base64_encode($output);
    }
    /**
     * 解密 公密钥加密后的密文
     */
    public function private_decrypt($input) {
        openssl_private_decrypt(base64_decode($input),$output,$this->private_key_resource);
        return $output;
    }
}

  

示例:

$all = $this->getPost(‘all‘);
        $public_key = dirname(__DIR__).‘/logic/public_key.txt‘;
        $private_key = dirname(__DIR__).‘/logic/private_key.txt‘;
        $rsa = new  RsaLogic($public_key, $private_key);
        $all = $rsa->private_decrypt($all);
        echo $all;exit;

  

 

php/js/linux: js加密(rsa公钥加密) php解密(rsa私钥解密)

标签:div   zip   示例   nbsp   git   com   except   tail   bad   

原文地址:http://www.cnblogs.com/achengmu/p/7815870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!