JS AES加密与PHP解密(转)
网页端(在没有https情况下)给密码之类的加密传输,虽然多此一举,也好过直接监控软件就能看到密码
思路
在传输密码的时候,先向后台获取一个随机码或者验证码,作为秘钥,网页端根据这个秘钥,加密要传输的数据,服务端先验证验证码是否正确,如果验证正确,根据验证码进行数据解密 fox.风
PHP
class AesJs { /**向量 * @var string */ private static $iv = "1234567890123412";//16位 /** * 默认秘钥 */ const KEY = '1111111111111123';//16位 public static function init($iv = '') { self::$iv = $iv; } /** * 加密字符串 * @param string $data 字符串 * @param string $key 加密key * @return string */ public static function encrypt($data = '', $key = self::KEY) { $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, self::$iv); return base64_encode($encrypted); } /** * 解密字符串 * @param string $data 字符串 * @param string $key 加密key * @return string */ public static function decrypt($data = '', $key = self::KEY) { $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($data), MCRYPT_MODE_CBC, self::$iv); return rtrim($decrypted, "\0"); } } //调用 //加密 AesJs::encrypt('要加密的字符串','秘钥'); //解密 AesJs::decrypt('要解密的字符串','秘钥');
JS
下载地址:
1.https://code.google.com/archive/p/crypto-js/downloads
2.https://github.com/brix/crypto-js/tree/release-3.1.2 (build 目录下)
先加载js文件
<script src="crypto-js/rollups/aes.js" type="text/javascript"></script>
<script src="crypto-js/rollups/md5.js" type="text/javascript"></script>
<script src="crypto-js/components/pad-zeropadding-min.js" type="text/javascript"></script>
/*** 加密*/
function encrypt(str,key) {key = CryptoJS.enc.Utf8.parse(key?key:"1111111111111111");// 秘钥var iv= CryptoJS.enc.Utf8.parse('1234567890123412');//向量ivvar encrypted = CryptoJS.AES.encrypt(str, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding });return encrypted.toString();
}
/*** 解密* @param str*/
function decrypt(str) {var key = CryptoJS.enc.Utf8.parse("1111111111111111");// 秘钥var iv= CryptoJS.enc.Utf8.parse('1234567890123412');//向量ivvar decrypted = CryptoJS.AES.decrypt(str,key,{iv:iv,padding:CryptoJS.pad.ZeroPadding});return decrypted.toString(CryptoJS.enc.Utf8);
}
//调用
//加密
console.log(encrypt("12345"));
//解密
console.log(decrypt("待解密字符"));
实际使用
JS
//加密部分要改造一下
/*** 加密*/
function encrypt(str,key) {key = CryptoJS.enc.Utf8.parse(CryptoJS.MD5(key).toString());//秘钥var iv= CryptoJS.enc.Utf8.parse('1234567890123412');//向量ivvar encrypted = CryptoJS.AES.encrypt(str, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding });return encrypted.toString();
}
//验证码 转换成大写
var username=$('#username').val();//获取用户名
var pwd=$('#pwd').val();//获取密码
var verify=$('#verify').val();//获取验证码
verify = verify.toUpperCase();
var json = {username: username, pwd: pwd};//被加密的数据
var aes = encrypt(JSON.stringify(json), verify);//加密
var param = {verify: verify, param: aes};
$.post("/user/login?_=" + new Date().getTime(), param, function (data) {if (data) {...} else {....}
}, "json");
PHP
$verify=input('verify');//验证码
$param=input('param');//加密后数据
//先转换成大写
//然后MD5
$json=AesJs::decrypt($param,md5(strtoupper($verify)));
echo $json;
$arr=json_decode($json,true);
print_r($arr);
来源
http://blog.csdn.net/momo_mutou/article/details/44240371
JS AES加密与PHP解密(转)相关推荐
- js aes加密_nodejs中使用Crypto-JS对图片进行加解密
在用nodejs开发后台的时候,为了安全的需要,经常会有加密的需求,对前端传入的图片进行AES加密后存储,然后在前端调用的时候,对图片进行解密,并返回Base64编码格式的图片. Crypto-JS这 ...
- js aes加密_某高考咨询网js逆向分析笔记
一.某高考资讯网逆向分析 某网站的js加密分析,安全签名signsafe + HmacSHA1 + AES 一年前分析过网站数据还没有加密,最近需要获取新的数据发现原先的爬虫失效,请求和响应都经过加密 ...
- PHP密码问题陈婷代码_登录中利用JS前端加密PHP后端解密保证数据非明文传输的安全方法...
为什么要研究这个呢,因为我所在单位的信息管理部门在监控系统上发现有大量的明文账号(身份证号)和密码在传输,被告知这很不安全,索性就直接解决这个问题,利用JS前端加密PHP后端再加密来解决这个问题,保证 ...
- java AES 加密和linux解密
java AES 加密: package app;import static java.nio.charset.StandardCharsets.US_ASCII; import static jav ...
- java linux aes_java AES 加密和linux解密
java AES 加密:package app; import static java.nio.charset.StandardCharsets.US_ASCII; import static jav ...
- java aes 中文_java实现AES加密(解决中文解密后乱码问题,解决传输字符串后解密报错的问题)...
在对安全性要求比较高的报文做加密的时候,算法有很多种,我这里主要用到的就是AES加密算法.由于在国内使用,所以不可避免的要对中文进行加密和解密,而在这个过程中,发现,如果不做处理,很容易会出现中文乱码 ...
- window环境下AES加密文件无法解密问题记录
最近在做项目中遇到需要对数据进行AES加密,加密文件用openssl命令行解密. 在linux/unix 环境下测试没有问题,但在windows环境下一直解密失败,由于AES解密数据要求解密数据需16 ...
- rsa实现js前台加密java后台解密
前段时间咱老大吩咐我写一个rsa前台加密到后台用java解密.(说实话这之前我还真没用过) 不过没办法啊,这是任务,于是研究了一下.圆满完成任务了,下面共享下实现思路: 准备工作:其实鄙人也没那么强啦 ...
- npm aes 加密(js aes 加密)
加密 function encryption(plaintText) { //明文var plaintText = plaintText;// ECB加密var options = {mode: Cr ...
最新文章
- Generalized Linear Models
- 【NLP】Transformer详解
- MariaDB 窗口函数row_number、rank介绍
- JS的for循环小例子
- ViewPager+Fragment实现TabHost,Fragment动态添加、删除,Tab选项卡跟随滑动
- Python nose单元测试框架的安装与使用
- ARM Neon 列子 - Vector Add
- sift算法_单应性Homograph估计:从传统算法到深度学习
- Eclipse之java虚拟机初始化失败问题已解决
- 比较两个字符串相同的个数,并输出
- cassandra根据用户名密码登录cqlsh
- 雅虎财经 api_雅虎音乐API
- HDU6438(优先队列+思维)
- 思科Cisco 2960系列交换机配置命令
- 浅谈ES6后的TDZ时间死区
- 如何有效提高生产车间的生产效率呢?
- 数据分析实战一:教育课程案例线上平台数据分析
- linux 内核协议栈 NAPI机制与处理流程分析(图解)
- Eclipse中 maven项目报错:Project 'xxx' is missing required Java project: 'xxx'
- ZDNS助力中国科技网启动RPKI路由验证,我国进入IP地址路由安全认证时代