原理:javascript加密PHP解密; 完全依赖openssl;

一. openssl 是干嘛的
它集成了众多密码算法及实用工具

rsa加密流程;(今天只讲众多加密方式中的一种)
1. 在当前文件夹下生成一个包含 "公钥"和"私钥" 两部分内容的文本文件; 命名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

二. jsencrypt.js这个文件定义了一个JSEncrypt方法 可以去git搜一下 对于此篇文档就不展开太多
使用步骤
var res = new JSEncrypt
res.setPublicKey('---这里就填写test_pub.key文件中的字符串内容---'); //设置公有key
var temp = res.encrypt("填写需要加密的内容");//利用刚设好的key 对明文进行加密;
var data = encodeURI(temp).replace(/\+/g, '%2B'), //+号的处理: 加密完成后就可以ajax传送了

前端页面代码:

<!DOCTYPE html>
<html>
<head>
// 引入 jquery 和 jsencrypt.js
<script src="./jquery.min.js"></script>
<script src="./jsencrypt.js"></script> <script type="text/javascript">
$(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);
}
});
}); });
</script>
</head>
<body>
<div class="main">
<input type="button" id="btn" value="点我" />
<hr/>
注意+好的处理
</div>
</body>
</html>

后台代码:

<?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 ;
} }

下载地址: http://files.cnblogs.com/files/sixiong/openssl.zip

源自:https://www.cnblogs.com/sixiong/p/5885111.html ,谢谢谢该博主!

js加密php解密---jsencrypt的更多相关文章

  1. javascript加密PHP解密---jsencrypt

    今天偶然发现jsencrypt这玩意,之前做"直播室聊天"时 数据传输明文问题没解决; 一直苦苦寻找技术解决方案今天勉强找了个: 原理:javascript加密PHP解密: 完全依 ...

  2. RSA算法 JS加密 JAVA解密

    有这样一个需求,前端登录的usernamepassword,password必需加密.但不可使用MD5,由于后台要检測password的复杂度,那么在保证安全的前提下将password传到后台呢,答案 ...

  3. 【不怕坑】之 Node.js加密 C#解密

    本人也不太了解AES加密解密,为了解决Node.js加密,但是无法C#解密的问题,在网上搜了大量的相关文章. 但是多数是Node.js vs Java 或 Java vs C#的双向加密解密代码,但是 ...

  4. RSA js加密 java解密

    1. 首先你要拥有一对公钥.私钥: ``` pubKeyStr = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1gr+rIfYlaNUNLiFsK/Kn ...

  5. js加密php解密(CryptoJS)碰到的坑

    今天做了一个功能,需要js传密码到php文件,对js密码 进行判断,为想为这个传输过程进行解密,参考了网上的一个方法(这个方法我只是使用了,并没有太深了解0.0) 首先要引入3个js文件 (在网上可搜 ...

  6. Js加密与解密

    <html><head><META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes"> ...

  7. JS里charCodeAt()和fromCharCode()方法拓展应用:加密与解密

    JS实现客户端的网页加密解密技术,可用作选择性隐蔽展示.当然客户端的加密安全度是不能与服务器相提并论,肯定不能用于密码这类内容的加密,但对于一般级别的内容用作展示已经够了. JS加密与解密的解决方案有 ...

  8. Javascript中双等号(==)隐性转换机制 JS里charCodeAt()和fromCharCode()方法拓展应用:加密与解密

    Javascript中双等号(==)隐性转换机制   在Javascript中判断相等关系有双等号(==)和三等号(===)两种.其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否 ...

  9. RSA 加密 解密 (长字符串) JAVA JS版本加解密

    系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...

随机推荐

  1. 647. Palindromic Substrings

    Given a string, your task is to count how many palindromic substrings in this string. The substrings ...

  2. Go语言之函数签名

    使用type关键字进行, 函数类型变量也可以作为函数的参数或返回值. 我觉得属于高级技巧了,初学者可能需要很多代码实现的, 高级的就可以更通用的实现. package main import &quo ...

  3. Visual Studio "14" CTPs

    下载地址:http://www.visualstudio.com/en-us/downloads/visual-studio-14-ctp-vs       上张有亮点的图: 实现亮点的方法(Remo ...

  4. 解决h5网页微信分享链接不能显示缩略

    <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js& ...

  5. alpha冲刺6/10

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:感恩节~ 团队部分 后敬甲(组长) 过去两天完成了哪些任务 文字描述 设计了拍照界面和图片上传界面 沟通了前端进度 接下 ...

  6. XNginx - nginx 集群可视化管理工具

    之前团队的nginx管理,都是运维同学每次去修改配置文件,然后重启,非常不方便,一直想找一个可以方便管理nginx集群的工具,翻遍web,未寻到可用之物,于是自己设计开发了一个. 效果预览 集群gro ...

  7. 跨域资源共享 CORS 详解(转自阮一峰博客)

    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从 ...

  8. 根据cookie记录跟踪ID来确定分享对象

    一 :思路分析 1:用户注册的时候标记推客 2:推客生成分享链接 分享链接构成   (环境前缀+(此链接打开时需要调用的接口+推客的标记+&url=(商品的链接))) 3:需要写一个分享链接调 ...

  9. Linux下C语言的文件操作

    代码: #include <stdio.h> #include <string.h> #include <fcntl.h> /*************基本的函数A ...

  10. 用sql的avg(score)求完平均值后,保存两位小数的方法(用于查询或视图)

    查jx_score表的平均值,以哪次考试(testid)和科目分组(courseid) select testid, courseid, round(avg(`jx_score`.`score`),2 ...