使用AES方式用php和JS互相加密和解密

来源:赵克立博客 分类: PHP 标签:PHP加密解密发布时间:2016-05-05 09:02:14最后更新:2018-07-21 12:22:57浏览:1480
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2018-07-21 12:22:57
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章


已经有最新的互通的加密解密方法请参考下面文章

https://www.zhaokeli.com/article/8324.html



在js中加密解密要用到下面三个js文件请先下载

文章后面有附件

QQ截图20160505085012.png

下面是php端加密解密的代码函数

	/**
	 * aes加密
	 * @param  [type] $text [加密文本]
	 * @param  [type] $key  [加密密钥]
	 * @param  [type] $iv   [加密密钥向量]
	 * @return [type]       [description]
	 */
	function aesEncode($text, $key, $iv) {
		$key       = md5($key);
		$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
		return base64_encode($crypttext);
	}
	/**
	 * aes解密
	 * @param  [type] $text [解密文本]
	 * @param  [type] $key  [解密密钥]
	 * @param  [type] $iv   [解密密钥向量]
	 * @return [type]       [description]
	 */
	function aesDecode($text, $key, $iv) {
		$key = md5($key);
		return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($text), MCRYPT_MODE_CBC, $iv);
	}

php的使用方法

		$text      = '要加密的文本';
		$key       = 'aaaaaaaaaaaaaaaaaa'; //密钥,提示key的长度必须16,32位,这里直接MD5一个长度为32位的key
		$iv        = '1234567812345678'; //密钥向量
		$encodestr = aesEncode($text, $key, $iv);
		$decodestr = aesDecode($encodestr, $key, $iv);

js中aes的使用方法,首先记得引入上面三个js文件,使用下面两个函数

   /**
    * js aes加密
    * @param  {[type]} text [文本]
    * @param  {[type]} key  [密钥]
    * @param  {[type]} iv   [密钥向量]
    * @return {[type]}      [description]
    */
    var js_aesEncode=function(text,key,iv){
	    var key_hash = CryptoJS.MD5(key);
	    var key = CryptoJS.enc.Utf8.parse(key_hash);
	    var iv  = CryptoJS.enc.Utf8.parse(iv);
    	var encrypted = CryptoJS.AES.encrypt(text, key, { iv: iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
    	return encrypted;
    };
    /**
     * js aes解密
     * @param  {[type]} text [文本]
     * @param  {[type]} key  [密钥]
     * @param  {[type]} iv   [密钥向量]
     * @return {[type]}      [description]
     */
    var js_aesDecode=function(text,key,iv){
	    var key_hash = CryptoJS.MD5(key);
	    var key = CryptoJS.enc.Utf8.parse(key_hash);
	    var iv  = CryptoJS.enc.Utf8.parse(iv);
    	var decrypted = CryptoJS.AES.decrypt(text, key, { iv: iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
    	decrypted =decrypted.toString(CryptoJS.enc.Utf8);
    	return decrypted;
    };


调用方法

	var key='aaaaaaaaaaaaaaaaaa';
	var iv='1234567812345678';
	var encrypted=js_aesEncode('Message',key,iv);
	var decrypted=js_aesDecode(encrypted,key,iv);



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python