jsencrypt php,js加密php解密---jsencrypt

一. openssl

它集成了众多密码算法及实用工具

rsa加密流程;(今天只讲众多加密方式中的一种)

在当前文件夹下生成一个包含 "公钥"和"私钥" 两部分内容的文本文件; 命名test.key

[root@iZ28pw7sv4qZ openssl]#openssl genrsa -out test.key 1024

2.将这个文本文件中的“公钥”提取出来: 命名test_pub.key

[root@iZ28pw7sv4qZ openssl]#openssl rsa -in test.key -pubout -out test_pub.key

3.创建一个hello.txt的文本文件,然后利用此前生成的公钥加密文件;

[root@iZ28pw7sv4qZ openssl]#echo "1234561122" > ./hello.txt

[root@iZ28pw7sv4qZ openssl]#openssl rsautl -encrypt -in hello.txt -inkey test_pub.key -pubin -out hello.en.txt

4.解密文件

[root@iZ28pw7sv4qZ openssl]#openssl rsautl -decrypt -in hello.en.txt -inkey test.key -out hello.de.txt

5.解析后的结果

[root@iZ28pw7sv4qZ openssl]# cat hello.de.txt

二. js加密php解密

前端代码:

// 引入 jquery 和 jsencrypt.js

$(function () {

var encrypt = new JSEncrypt();

encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0Llg1bVZhnyslfezwfeOkvnXWq59bDtmQyHvxkP/38Fw8QQXBfROCgzGc+Te6pOPl6Ye+vQ1rAnisBaP3rMk40i3OpallzVkuwRKydek3V9ufPpZEEH4eBgInMSDiMsggTWxcI/Lvag6eHjkSc67RTrj96oxj0ipVRqjxW4X6HQIDAQAB');//设置公有key

var data = encrypt.encrypt("需要机密的内容");

console.log(data);

$("#btn").click(function () {

$.ajax({

url: '/openssl/index.php',

data: "password=" + encodeURI(data).replace(/\+/g, '%2B'), //+号的处理:因为数据在网络上传输时,非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,而base64编码在传输到后端的时候,+会变成空格,因此先替换掉。后端再替换回来

type: 'post',

success: function (msg) {

alert(msg);

}

});

});

});


注意+好的处理

PHP代码:

class Index{

public function index

{

if(isset($_POST['password']))

{

$txt = $this->decodeing($_POST['password']);

die('解密字符串:'.$txt);

}

}

/**

* 公钥加密

*

* @param string 明文

* @return string 密文(base64编码)

*/

public function encodeing($sourcestr)

{

$key_content = file_get_contents('./_test_public.key');

$pubkeyid = openssl_get_publickey($key_content);

if (openssl_public_encrypt($sourcestr, $crypttext, $pubkeyid))

{

return base64_encode("".$crypttext);

}

}

/**

* 私钥解密

*

* @param string 密文(二进制格式且base64编码)

* @param string 密文是否来源于JS的RSA加密

* @return string 明文

*/

public function decodeing($crypttext)

{

$key_content = file_get_contents('./_test.key');

$prikeyid = openssl_get_privatekey($key_content);

$crypttext = base64_decode($crypttext);

if (openssl_private_decrypt($crypttext, $sourcestr, $prikeyid, OPENSSL_PKCS1_PADDING))

{

return "".$sourcestr;

}

return ;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值