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

今天做了一个功能,需要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个参数不是很清楚,但是跟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:我都是用字母数字下划线测试的,汉子和特殊字符暂未测试!
 
 
时间: 2024-07-31 05:25:03

js加密php解密(CryptoJS)碰到的坑的相关文章

RSA算法 JS加密 JAVA解密

有这样一个需求,前端登录的用户名密码,密码必需加密,但不可使用MD5,因为后台要检测密码的复杂度,那么在保证安全的前提下将密码传到后台呢,答案就是使用RSA非对称加密算法解决 . java代码 需要依赖 commons-codec 包 RSACoder.java import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import java.security.*; import java.securit

RSA js加密 java解密

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

C#/JS AES字符串加密和解密

往往我们有一种需求:在页面端实现对即将传入到后台端的某些字符串进行加密,然后在后台端对传入进来的字符串做解密.在一些有安全要求的数据传输上会用到此种方式 下面分别列出js端和后台端的加密或解密代码. js端加密解密 aes.js: /* CryptoJS v3.1.2 code.google.com/p/crypto-js (c) 2009-2013 by Jeff Mott. All rights reserved. code.google.com/p/crypto-js/wiki/Licen

js加密的密文让PHP解密(AES算法)

JS加密代码如下 <script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/aes.js"></script> <script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/md5.js"></script> <script src=&qu

CryptoJS AES加密、解密练习demo

<!DOCTYPE html> <html> <head>     <title>aes demo</title>     <meta charset="utf-8"/>     <style>         *{margin:0;padding:0}         .demo-wrap{width: 400px;height: 50px;margin: 50px auto auto auto}  

前端加密传输 crypto-js AES 加密和解密

配置: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0&q

JS URL 使用base64加密与解密

JS编码方式: <script type="text/javascript"> document.write(encodeURI("http://www.w3school.com.cn/My first/")+ "<br />")//编译 document.write(decodeURI("http://www.w3school.com.cn/My first/")+ "<br />

RSA前台js加密,后台C#解密

一.需求: 为了安全,项目中前台登陆用的密码需要加密传到后台,后台c#解密登陆密码. 二.解决方案 采用非对称加密算法RSA来达到目的,前台登陆页面一加载便发送一次ajax请求获取后台产生的公钥,用于前台加密,用户点击登陆时出发加密过程并提交加密的数据到后台,后台C#语言采用已封装好的RSA算法工具进行密码解密. 以下为c#RSA算法加密代码: private static RSAParameters rsap = new RSAParameters() { Modulus = Convert.

RSA加密前端JS加密,后端asp.net解密,报异常

参考引用:http://www.ohdave.com/rsa/的JS加密库 前端JS加密代码: function GetChangeStr() { debugger; var pwdStr = document.getElementById("txtPassWordStr").value; var uidStr= $("#<%=txtUserStr.ClientID%>").val(); if (!pwdStr || pwdStr.length == 0