JS AES加密与PHP解密
2016-10-08 13:12
621 查看
网页端(在没有https情况下)给密码之类的加密传输,虽然多此一举,也好过直接监控软件就能看到密码
fox.风
1.https://code.google.com/archive/p/crypto-js/downloads
2.https://github.com/brix/crypto-js/tree/release-3.1.2 (build 目录下)
先加载js文件
PHP
来源
http://blog.csdn.net/momo_mutou/article/details/44240371
思路
在传输密码的时候,先向后台获取一个随机码或者验证码,作为秘钥,网页端根据这个秘钥,加密要传输的数据,服务端先验证验证码是否正确,如果验证正确,根据验证码进行数据解密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');//向量iv var 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');//向量iv var 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');//向量iv var 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
相关文章推荐
- PHP开发过程中AES加密解密问题 js前端AES加密,PHP解密
- 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)
- node.js AES/ECB/PKCS5Padding 与其他语言的加密解密通用
- Php AES加密、解密与Java互操作的问题
- JS实现AES加密并与PHP互通
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现
- RSA 加解密的例子,JS加密--php解密
- Php AES加密、解密与Java互操作的问题
- js加密的密文PHP解密(AES算法)
- 关于openssl rsa php c++ js 协同加密解密的一些资源链接
- js与java相互aes加密解密
- android、ios、php之间AES加密解密
- as3.0利用DES和AES对数据进行加密和解密并且与php端加密匹配!
- js与php加密、解密函数
- PHP、Java、.Net和Javascript的AES加密解密实现
- 关于PHP URL加密与JS url解密问题
- [Day]使用AES在php中加密,并用objective-c解密
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]