关于 javascript:客户端使用 CryptoJS 计算的 MD5 哈希与终端计算不同

Client-Side calculated MD5 hash using CryptoJS is differnt to terminal calculation

我已将文件上传集成到我的网络应用程序中。不应上传文件,但应在客户端计算文件的 MD5 哈希值,然后仅将此哈希值发送到服务器。

Javascript 部分:

1
2
3
4
5
6
7
8
9
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)。终端给了我与各种在线转换器相同的哈希值。

和我试过的SHA1和SHA256算法一样。

示例:
来自维基百科的这张图片给出了以下哈希值。

终端:e5d23cb99614778b2acb163b8ee90810

CryptoJS:468641711626fcfe6d956ddb21ccd4c7


readAsDataURL() 将返回一个 base64 字符串(带有数据 URI 前导码),这就是您的散列,但是 MD5 终端工具只会读取原始字节