分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

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

发布时间:2023-09-06 01:24责任编辑:胡小海关键词:js

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私钥解密)

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved