今天靠大佬的帮助,成功的解决了一个弄了很久的问题。原由就是咱们要对一个手机号进行加密。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