gpt4 book ai didi

javascript - 客户端使用Crypto JS计算MD5哈希与终端计算不同

转载 作者:行者123 更新时间:2023-12-02 23:29:22 41 4
gpt4 key购买 nike

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

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 )。终端为我提供了与各种在线转换器相同的哈希值。

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

示例: This image维基百科给出了以下哈希值。

终端:e5d23cb99614778b2acb163b8ee90810

CryptoJS:468641711626fcfe6d956ddb21ccd4c7

最佳答案

readAsDataURL() 将返回一个 base64 字符串(带有数据 URI 前导码),因此这就是您的哈希值,但是 MD5 终端工具只会读取原始字节并将它们哈希为 -是。

修复使用:

reader.readAsArrayBuffer(input.files[0]);

获取原始字节并且:

var hashed = CryptoJS.MD5(CryptoJS.lib.WordArray.create(data));

以 CryptoJs 可以处理的格式将它们传递给 CryptoJs。

关于javascript - 客户端使用Crypto JS计算MD5哈希与终端计算不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56580612/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com