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

首先要引入3个js文件 (在网上可搜索到)

<script src="../public/js/aes.js"></script>
<script src="../public/js/md5.js"></script>
<script src="../public/js/pad-zeropadding.js"></script>

然后 附上我使用时的代码
var data= "132465";//需要加密的数据
var key = CryptoJS.enc.Utf8.parse('1a1a1a1b1e1c1s12');
var iv = CryptoJS.enc.Utf8.parse('1111111111111111');

//上面2个参数'lalal...','111...'自己定义,但是跟php文件中的参数要相同(长度为16位,其他位数暂未尝试) var encrypted = CryptoJS.AES.encrypt(data, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding });
var msg = encrypted.toString();//结果为加密后的字符串 接下来是php文件
  
$pass = str_replace(' ','+',$pass);

//第一个坑,上面之所以要把字符串中的空格给替换为'+',不替换下面解码会出错!!!
(这个是解决掉下面的坑后再测试时发现,有些加密解密会成功,有些会失败,把加密后的字符串独立拿出来时才发现这个问题) $privateKey = "1a1a1a1b1e1c1s12";
$iv = "1111111111111111";

//上面2个要跟前面js文件的key和vi相同 $encryptedData = base64_decode($pass);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $encryptedData, MCRYPT_MODE_CBC, $iv);
$decrypted =trim($decrypted);

第二个坑,上2步结束后,如果不用trim方法,打印var_dump($decrypted),会输出加密前的值,但是!!!后面紧跟着一堆乱码!
我查看源代码发现,这些是 '' 这个字符我一脸懵逼,搞了好多方法都没去掉(果然菜鸡),后来试了trim这个函数,马上就没了这些
乱码(好气!),就完全获得到js加密前的密码了(好像很简单的样子)。。。。特地写了这篇文章来纪念我逝去的下午。 tips:我都是用字母数字下划线测试的,汉子和特殊字符暂未测试!
 
 

最新文章

  1. 转 使用@Controller注解为什么要配置&lt;mvc:annotation-driven /&gt;
  2. .net 开发---windows服务
  3. 用Swift语言做App开发之单元测试
  4. C语言第七节流程控制
  5. 管道命令xargs
  6. Multiple View Geometry in Computer Vision Second Edition by Richard Hartley 读书笔记(二)
  7. 用c语言程序对显存进行操作
  8. nginx+keepalived实现nginx双主高可用的负载均衡
  9. javascript正则
  10. English Vocabulary
  11. JS 与 OC
  12. iOS项目之wifi局域网传输文件到iPhone的简单实现
  13. 通过编译lambda表达式来创建实例(可在反射时候用,效率比反射高一些)
  14. 数据结构——Java实现顺序栈
  15. [WC2006]水管局长(LCT)
  16. 整理volatile相关知识点
  17. .net 设置Webbowser 版本
  18. C# 连接Oracle数据库,免安装oracle客户端
  19. cassandra运行出现了Unable to gossip with any seeds,cqlsh链接不上,提示connection refused处理办法
  20. Spring MVC配置静态资源和资源包

热门文章

  1. 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容
  2. [Web 前端] 028 jQuery 事件
  3. MySQL-快速入门(13)MySQL日志
  4. 小白学Python(19): Pyinstaller 生成 exe 文件
  5. 【问题解决方案】visudo: /etc/sudoers is busy, try again later
  6. 简单的物流项目实战,WPF的MVVM设计模式(三)
  7. vue 模拟去哪网
  8. Androidstudio中添加jar包
  9. DOMContentLoaded和load的区别
  10. 微信小程序(19)-- 从底部向上滑出的动画效果