实践中遇到的问题:
在Js加密时出现,用Jquery进行$("#login_pwd")是不行的,包括用手写赋值也是不蚝的,还得(chatValidate是form的name名字):
document.chatValidate.login_pwd.value = encryptedLoginUserPwd;//加密后再传输
通过console.log输出这个encryptedLoginUserPwd是一个对旬,但用:document.write是可以输出的,可能还是对这个加密函数不是太了解罢,还是对Js:
crypto-js提供了多种常用加密算法的JS库。这里不多解释。
这里主要讲 前端使用crypto-js AES加密后,php解密。
前端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="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/pad-zeropadding.js"></script>
<script>
var key_hash = CryptoJS.MD5("Message");
var key = CryptoJS.enc.Utf8.parse(key_hash);
var iv = CryptoJS.enc.Utf8.parse('1234567812345678');
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
document.write("encode:"+encrypted);
</script>
php代码
<?php
$text = "Message";
$key = md5($text); //key的长度必须16,32位,这里直接MD5一个长度为32位的key
$iv='1234567812345678';
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
$decode = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $crypttext, MCRYPT_MODE_CBC, $iv);
echo base64_encode($crypttext);
echo "<br/>";
echo $decode;
echo "<br/>";
?>
http://localhost/aes/aes.html
encode:yMjizJCGQh+jxX4BXEtlNw==
http://localhost/aes/aes.php
yMjizJCGQh+jxX4BXEtlNw==
Message
实践是OK的,来自:
http://www.madeby83.com/%E5%89%8D%E7%AB%AFcrypto-js-aes%E5%8A%A0%E5%AF%86-php%E5%90%8E%E7%AB%AF%E8%A7%A3%E5%AF%86.html
前端解密:
http://localhost/chat/JsJiamiJiemi.html
dd52feee2ecea4ca159399e2dfb1d0bb
31323334353637383132333435363738
31323334353637383132333435363738
undefined
3VL+7i7OpMoVk5ni37HQuw==
1234567890
PHP加密:
$chat_msg_Html = nl2br($chat_msg);
$outEncryOutText = "Message";
$key = md5($outEncryOutText); //key的长度必须16,32位,这里直接MD5一个长度为32位的key
$iv='1234567812345678';
$cryptEncryOutText = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $outEncryOutText, MCRYPT_MODE_CBC, $iv);
echo base64_encode($cryptEncryOutText);
如果内容是message则echo会输出 :
yMjizJCGQh+jxX4BXEtlNw==
在Js加密时出现,用Jquery进行$("#login_pwd")是不行的,包括用手写赋值也是不蚝的,还得(chatValidate是form的name名字):
document.chatValidate.login_pwd.value = encryptedLoginUserPwd;//加密后再传输
通过console.log输出这个encryptedLoginUserPwd是一个对旬,但用:document.write是可以输出的,可能还是对这个加密函数不是太了解罢,还是对Js:
crypto-js提供了多种常用加密算法的JS库。这里不多解释。
这里主要讲 前端使用crypto-js AES加密后,php解密。
前端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="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/pad-zeropadding.js"></script>
<script>
var key_hash = CryptoJS.MD5("Message");
var key = CryptoJS.enc.Utf8.parse(key_hash);
var iv = CryptoJS.enc.Utf8.parse('1234567812345678');
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
document.write("encode:"+encrypted);
</script>
php代码
<?php
$text = "Message";
$key = md5($text); //key的长度必须16,32位,这里直接MD5一个长度为32位的key
$iv='1234567812345678';
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
$decode = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $crypttext, MCRYPT_MODE_CBC, $iv);
echo base64_encode($crypttext);
echo "<br/>";
echo $decode;
echo "<br/>";
?>
http://localhost/aes/aes.html
encode:yMjizJCGQh+jxX4BXEtlNw==
http://localhost/aes/aes.php
yMjizJCGQh+jxX4BXEtlNw==
Message
实践是OK的,来自:
http://www.madeby83.com/%E5%89%8D%E7%AB%AFcrypto-js-aes%E5%8A%A0%E5%AF%86-php%E5%90%8E%E7%AB%AF%E8%A7%A3%E5%AF%86.html
前端解密:
http://localhost/chat/JsJiamiJiemi.html
dd52feee2ecea4ca159399e2dfb1d0bb
31323334353637383132333435363738
31323334353637383132333435363738
undefined
3VL+7i7OpMoVk5ni37HQuw==
1234567890
PHP加密:
$chat_msg_Html = nl2br($chat_msg);
$outEncryOutText = "Message";
$key = md5($outEncryOutText); //key的长度必须16,32位,这里直接MD5一个长度为32位的key
$iv='1234567812345678';
$cryptEncryOutText = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $outEncryOutText, MCRYPT_MODE_CBC, $iv);
echo base64_encode($cryptEncryOutText);
如果内容是message则echo会输出 :
yMjizJCGQh+jxX4BXEtlNw==
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/6615/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2013-9-1 20:05
评论列表