【发布时间】:2013-11-28 10:37:08
【问题描述】:
当使用 md5sum linux 命令和 CryptoJS 的 MD5 方法时,我试图让 tar 文件的 md5sum 产生相同的值。
在 JavaScript 中我会这样做(在将文件放入 HTML 表单之后):
var reader = new FileReader();
reader.onloadend = function () {
text = (reader.result);
}
reader.readAsBinaryString(document.getElementById("firmware_firmware").files[0]);
var hash = CryptoJS.MD5(text);
hash.toString();
在 Linux 中我会这样做:
md5sum name_of_file.tar
目前这两个产生不同的结果。如何让 JavaScript 以与 Linux 上的 md5sum 相同的方式获取 tar 文件的内容进行 MD5 处理?
对于一个简单的字符串,md5sum 和 CryptoJS 产生相同的值。
编辑:使用名为 Fred.txt 的文件,内容为“Fred”,md5sum 和 CryptoJS 都产生相同的值:c624decb46fa3d60e824389311b252f6。
在 update.tar 文件中,linux 上的 md5sum 给我:1f046eedb7d8279953d233e590830e4f,在 CryptoJS 上给我:f0c3730e5a9863cffa0ba3fadd531788
Edit2:进一步测试表明,这实际上是一个问题,因为文件很大,例如 7 兆字节
【问题讨论】:
-
你能举例说明两者的输出吗?
readAsBinaryString(.....)是否有可能对文件名而不是文件内容进行哈希处理? -
感谢您的回复,我已经使用带有简单字符串的简单 txt 文件对其进行了测试,在这种情况下,Linux 和 CryptoJS 上的 md5sum 会产生相同的结果。我将在输出中进行编辑。
标签: javascript linux md5 fileapi cryptojs