[英]Md5 always same hash when drag&drop in javascript
我有拖放事件,我想将文件拖到 hash。 我有这个:
var file = ev.dataTransfer.items[i].getAsFile();
var hashf = CryptoJS.SHA512(file).toString();
console.log("hashf", hashf)
但是当我拖动不同的文件时,“hashf”总是相同的字符串。
问题是您正在尝试 hash 文件 object。 Hash 算法需要一个字符串到 hash。
将文件 Object 传递给CryptoJS.SHA512()
方法时,API 会尝试将 object 转换为字符串。 该转换导致CryptoJS.SHA512()
接收相同的字符串,无论您发送什么文件 object 提供它。
字符串是[object File]
- 您可以用该字符串替换代码中的file
,然后发现它与您一直看到的 hash 代码相同。
要解决此问题,请先从文件中检索文本并将其传递给散列算法:
file.text().then((text) => {
const hashf = CryptoJS.SHA512(text).toString();
console.log("hashf", hashf);
});
如果你更喜欢 async/await,你可以把它放在一个 IIFE 中:
(async() => {
const text = await file.text()
const hashf = CryptoJS.SHA512(text).toString();
console.log("hashf", hashf);
})();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.