JS 和 Python/Django 中文件的 MD5
MD5 of a file in JS and in Python/Django
我需要在 django 和 javascript 中检查图像的 md5。但是我没有得到相同的结果。 Django 代码在终端上为我提供了与 md5sum 相同的 md5。
Django 代码:
file0 = request.FILES.get('file')
buffer0 = file0.read()
print hashlib.md5(buffer0).hexdigest() //9f982242d24ab97a7254edd7e28e3921
我尝试了两个 javascript md5 库,它们给我相同的结果 (https://github.com/blueimp/JavaScript-MD5 and https://github.com/sytelus/CryptoJS)。
我尝试了不同的方法(readAsArrayBuffer、readAsBinaryString、...),其中 none 给我的 md5 与 python 和 md5sum 相同。
Javascript :
var reader = new FileReaderSync();
var datas = reader.readAsArrayBuffer(file);
console.log(md5(datas)); //060e4e9e30bcb9ae675a80328a87a687
var string0 = reader.readAsBinaryString(file);
console.log(md5(string0)); //2e4cac0a23ddf95683c6538d64b26e21
console.log(CryptoJS.MD5(string0).toString(CryptoJS.enc.Hex)); //2e4cac0a23ddf95683c6538d64b26e21
var string1 = reader.readAsText(file,'ascii');
console.log(md5(string1)); //329c4271b8eda786213b2468e378b251
console.log(CryptoJS.MD5(string1).toString(CryptoJS.enc.Hex));//329c4271b8eda786213b2468e378b251
var view = new Uint8Array(datas);
var str = ""
for (var i=0, strLen=view.length; i < strLen; i++) {
str+= String.fromCharCode(view[i]);
}
console.log(md5(str)); //2e4cac0a23ddf95683c6538d64b26e21
console.log(CryptoJS.MD5(string1).toString(CryptoJS.enc.Hex));
我认为问题出在我如何在 JS 中读取文件。
我使用了 SparkMD5 (https://github.com/satazor/js-spark-md5),它可以直接在数组缓冲区上工作,它给我的 md5 与 python.
中的相同
我需要在 django 和 javascript 中检查图像的 md5。但是我没有得到相同的结果。 Django 代码在终端上为我提供了与 md5sum 相同的 md5。
Django 代码:
file0 = request.FILES.get('file')
buffer0 = file0.read()
print hashlib.md5(buffer0).hexdigest() //9f982242d24ab97a7254edd7e28e3921
我尝试了两个 javascript md5 库,它们给我相同的结果 (https://github.com/blueimp/JavaScript-MD5 and https://github.com/sytelus/CryptoJS)。 我尝试了不同的方法(readAsArrayBuffer、readAsBinaryString、...),其中 none 给我的 md5 与 python 和 md5sum 相同。
Javascript :
var reader = new FileReaderSync();
var datas = reader.readAsArrayBuffer(file);
console.log(md5(datas)); //060e4e9e30bcb9ae675a80328a87a687
var string0 = reader.readAsBinaryString(file);
console.log(md5(string0)); //2e4cac0a23ddf95683c6538d64b26e21
console.log(CryptoJS.MD5(string0).toString(CryptoJS.enc.Hex)); //2e4cac0a23ddf95683c6538d64b26e21
var string1 = reader.readAsText(file,'ascii');
console.log(md5(string1)); //329c4271b8eda786213b2468e378b251
console.log(CryptoJS.MD5(string1).toString(CryptoJS.enc.Hex));//329c4271b8eda786213b2468e378b251
var view = new Uint8Array(datas);
var str = ""
for (var i=0, strLen=view.length; i < strLen; i++) {
str+= String.fromCharCode(view[i]);
}
console.log(md5(str)); //2e4cac0a23ddf95683c6538d64b26e21
console.log(CryptoJS.MD5(string1).toString(CryptoJS.enc.Hex));
我认为问题出在我如何在 JS 中读取文件。
我使用了 SparkMD5 (https://github.com/satazor/js-spark-md5),它可以直接在数组缓冲区上工作,它给我的 md5 与 python.
中的相同