国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

JS AES加密與PHP解密(轉)

2019-11-09 20:10:57
字體:
來源:轉載
供稿:網友

網頁端(在沒有https情況下)給密碼之類的加密傳輸,雖然多此一舉,也好過直接監控軟件就能看到密碼

思路

在傳輸密碼的時候,先向后臺獲取一個隨機碼或者驗證碼,作為秘鑰,網頁端根據這個秘鑰,加密要傳輸的數據,服務端先驗證驗證碼是否正確,如果驗證正確,根據驗證碼進行數據解密 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/downloads2.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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 合水县| 厦门市| 綦江县| 塘沽区| 梧州市| 安龙县| 仁布县| 平武县| 金华市| 文成县| 淮滨县| 孝感市| 崇州市| 东平县| 大方县| 陆川县| 海门市| 韩城市| 岳西县| 汶上县| 怀化市| 宜兰市| 始兴县| 射洪县| 潜江市| 平舆县| 巍山| 白银市| 盐边县| 临猗县| 富裕县| 泌阳县| 古交市| 古浪县| 旺苍县| 尉犁县| 靖安县| 循化| 郯城县| 工布江达县| 桑植县|