程序開發人員,不拘泥於語言與技術,目前主要從事PHP和前端開發,使用Laravel和VueJs,App端使用Apicloud混合式開發。合適和夠用是最完美的追求。javascript
我的網站:http://www.linganmin.cnphp
最近剛寫了一個手機在線播放的H5電影站:http://www.ifilm.ltdcss
最近使用php作了一個電影/電視劇在線播放的HTML5 的小站,使用到的是php的curl進行實時抓取,其中遇到了js加密的問題,遂Google解決之,纔有了這篇總結。html
CryptoJS是一個純javascript寫的加密類庫,他的GitHub倉庫地址 https://github.com/brix/crypt...前端
在使用時咱們須要引用該js文件,爲了方便我引用了的CDN上的連接java
上代碼git
<script src="http://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.js"></script> <script> var data = "en2JprK0nMyYgbd6dQO0O0OO0O0O" // 須要加密的字符串 var key_base="contentWindowHig"; // 加密祕鑰的基值 var iv_base="contentDocuments"; // 加密所需iv基值 /** * 定義加密函數 * @param {[type]} a [形參,須要加密的值] * @return {[type]} [加密後的值] */ var get=function(a){ var key_hash=CryptoJS.MD5(key_base); var key=CryptoJS.enc.Utf8.parse(key_hash); var iv=CryptoJS.enc.Utf8.parse(iv_base); var res=CryptoJS.AES.encrypt(a,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding}); return res.toString() } console.log(get(data)) // tPYJv39iEbdFD/UqNejyvkLG8ATdifyfE+BDeld2jWk= </script>
爲了文章的優雅,php將使用和js相同的變量命名github
上代碼curl
// 定義變量 $data = "en2JprK0nMyYgbd6dQO0O0OO0O0O"; $key_base = "contentWindowHig"; $iv_base = "contentDocuments"; // 加密前處理 $key = md5($key_base); $iv = $iv_base; // 加密 $cryptText = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv); $res = base64_encode($cryptText); // 解密 $cryptText = base64_decode($res); $decode = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $cryptText, MCRYPT_MODE_CBC, $iv);