今天靠大佬的幫助,成功的解決了一個弄了很久的問題。原由就是咱們要對一個手機號進行加密。php
加密方式是把一個字符串進行MD5加密以後,獲得原始 16 字符二進制格式。而後把獲得的這個字符做爲AES的key對手機號加密,最後獲得這結果。json
最奇怪的就是獲得二進制格式,我之前作過md5加密,獲得的都是字符串,無論是32位的,仍是16位,可是此次竟然要二進制。最開始去百度,發現網上沒有,最後仍是問的咱們大佬,須要引入一個crypto-js.min.js的文件,而後這裏面能獲得二進制格式的字符。下面我把這個文件放在網盤上,(連接:https://pan.baidu.com/s/1XQACI7FlAap2oclg8TLlnw 提取碼:hejh )還有就是咱們的代碼放在下面,爲了私密。我把一些代碼註釋了加密
1 var jsonStr = "123456"; 2 var key = CryptoJS.MD5(jsonStr); 3 var dataStr = mobile; 4 var encryptedData = CryptoJS.AES.encrypt(dataStr, key, { 5 mode: CryptoJS.mode.ECB, 6 padding: CryptoJS.pad.Pkcs7 7 }); 8 var word = encryptedData.ciphertext; 9 var encryptedBase64Str = CryptoJS.enc.Base64.stringify(word);
其中jsonStr爲須要加密的字符串,第二行獲得的key就是二進制字符,你們能夠自行的打印查看,而後從第四行開始,是進行AES加密。最後進行一個base64加密,而後這個encryptedBase64Str爲最後加密的獲得的東西。spa
一樣的後臺獲得我傳過去的這個東西,也是須要對jsonStr進行md5 二進制加密,獲得AES解密的密鑰,而後進行AES解密。獲得原始的數據值,應該就是123456就對了。code
這裏忍不住吐槽一下,人家php能直接獲取到這個二進制字符blog
1 <?php 2 $str = "Shanghai"; 3 echo "字符串:".$str."<br>"; 4 echo "TRUE - 原始 16 字符二進制格式:".md5($str, TRUE)."<br>"; 5 echo "FALSE - 32 字符十六進制格式:".md5($str)."<br>"; 6 ?>
羨慕。ip