crypto在線(xiàn)文件下載
https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.2.tgz
我已將文件上傳集成到我的網(wǎng)絡(luò)應(yīng)用程序中。該文件不應(yīng)上傳,但應(yīng)在客戶(hù)端計(jì)算該文件的 MD5 哈希值,然后僅將該哈希值發(fā)送到服務(wù)器研叫。
Javascript部分:
if (input.files && input.files[0]) {
let reader = new FileReader();
reader.onload = (e) => {
let data = e.target.result;
var hashed = CryptoJS.MD5(data);
console.log('hashed: ' + hashed);
}
reader.readAsDataURL(input.files[0]);
}
但是,上面的代碼為我提供了與終端不同的哈希值 (*md5sum *)璧针。終端為我提供了與各種在線(xiàn)轉(zhuǎn)換器相同的哈希值嚷炉。
與我嘗試過(guò)的SHA1和SHA256算法是一樣的。
示例: This image維基百科給出了以下哈希值探橱。
終端:e5d23cb99614778b2acb163b8ee90810
CryptoJS:468641711626fcfe6d956ddb21ccd4c7
最佳答案
readAsDataURL()
將返回一個(gè) base64 字符串(帶有數(shù)據(jù) URI 前導(dǎo)碼)申屹,因此這就是您的哈希值,但是 MD5 終端工具只會(huì)讀取原始字節(jié)并將它們哈希為 -是隧膏。
修復(fù)使用:
reader.readAsArrayBuffer(input.files[0]);
獲取原始字節(jié)并且:
var hashed = CryptoJS.MD5(CryptoJS.lib.WordArray.create(data));
以 CryptoJs 可以處理的格式將它們傳遞給 CryptoJs哗讥。