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加密与PHP解密(转)
网页端(在没有https情况下)给密码之类的加密传输,虽然多此一举,也好过直接监控软件就能看到密码 思路 在传输密码的时候,先向后台获取一个随机码或者验证码,作为秘钥,网页端根据这个秘钥,加密要传输的 ...
- 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 ...
最新文章
- php多维数组和对象,在PHP中将多维多对象数组转换为标准多维数组
- 润乾集算报表提升性能之可控缓存
- ASP.NET Core Identity 实战(1)——Identity 初次体验
- svn locked解决方法
- 吐血整理全网最全Spring面试题之高级篇(一)(共25题,附超详细解答)
- java context.xml_java-context.xml的解释
- OS开发UI篇—Quartz2D使用(截屏)
- win11如何进行bug反馈 windows11进行bug反馈的步骤方法
- 看了去年这些最热的木马、病毒和电信诈骗,感觉今年不会被骗了
- 杨帅浙江大学计算机,诚邀校友见证杭州校友会注册成立(非活动帖)
- 金融衍生品 matlab,Matlab金融工程教程金融衍生品计算PPT精选文档
- 安卓手机内外SD卡互换
- html密码浏览器不自动登录,怎样取消浏览器密码的自动登录
- 域控制器升级的先决条件失败之解决方式
- 机器学习算法笔记之K近邻算法(KNeighborsClassifier)
- opencv 简单的裂缝检测
- AM335x启动流程(BootRom- MLO-的Uboot)
- Federated Graph Neural Networks
- vue-aplayer的api详细讲解
- java集合类继承关系图_java集合继承关系图