js node md5模塊使用問題


 

問題描述:md5(123456)得到的結果不是正確的。

why?

問題查找:

1)安裝路徑問題:

yarn add md5(md5模塊在npmjs中顯示每周download人數高達百萬,有問題還這么多人?)

2)源碼查看:

md5入口源碼如下:

 

注意第一行注釋和最后一行注釋,就是需要把字符串轉成字節數組。

再看看不同輸入,console.log打印的結果,如下:

如果傳入數字123456,那么message的值是:message: 123456

如果傳入字符串"123456",那么message的值是:message: (6) [49, 50, 51, 52, 53, 54]

好家伙,問題來了,傳入一個數字,就無法變成字節數組了,那么后面是不是就會有問題了?

問題就出在crypt模塊的bytesToWords方法,它會把我們的字節數組變成高字節序32位字,如下:

 那么該函數傳入數字和字符串返回的結果肯定是不一樣的,按照數組取值,123456就是取值1,2,3,4,5,6來計算,“123456”則是取值49,50,51,52,53,54來計算,返回結果自然不一樣了

crypt模塊的bytesToWords函數返回結果如下:

數字123456的結果:crypt.bytesToWords: (2) [16909060, 84279296]

字符串123456的結果:crypt.bytesToWords: (2) [825373492, 892731392]

所以md5函數后面算法計算出來的結果肯定就不一致了。

3)解決方法:

傳入字符串:md5("123456")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM