[聊天加密]前端crypto-js AES加密解密和PHP后端解密,加密。

jackxiang 2013-8-27 10:19 | |
实践中遇到的问题:
在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
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]