• JS MD5 返回二进制格式


    今天靠大佬的帮助,成功的解决了一个弄了好久的问题。起因就是我们要对一个手机号进行加密。

      加密方式是把一个字符串进行MD5加密之后,得到原始 16 字符二进制格式然后把得到的这个字符作为AES的key对手机号加密,最后得到这结果。

    最奇怪的就是得到二进制格式,我以前做过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为最后加密的得到的东西。

    同样的后台得到我传过去的这个东西,也是需要对jsonStr进行md5 二进制加密,得到AES解密的密钥,然后进行AES解密。得到原始的数据值,应该就是123456就对了。

    这里忍不住吐槽一下,人家php能直接获取到这个二进制字符

    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 ?>

    羡慕。

  • 相关阅读:
    luogu1060开心的金明
    luogu1048采药
    uva1025城市里的间谍
    scoi刷题记录(2019/04/07)
    差分及树上差分的正确食用姿势(2019/2/21学习笔记)
    图论技巧(2019/1/28之一)
    考试反思(2019/1/26学习笔记)
    考试反思(2019/1/22)
    「一本通 5.2 例 5」皇宫看守
    「一本通 5.2 例 3」数字转换
  • 原文地址:https://www.cnblogs.com/daniao11417/p/10832652.html
Copyright © 2020-2023  润新知