我需要管理从服务器下载的图像文件的校验和。我有一个配置文件,其中包含jSON格式的文件的imagefilepath和校验和,如下所示:
{
"filepath": "/images/file.png",
"checksum": "dd37423ed23983442ddf232eab23b2b"
}
使用python脚本在服务器上生成图像文件的校验和(并添加到此配置文件中),如下所示:
import hashlib
f = open('file.png', 'rb')
m = hashlib.md5()
m.update(f.read())
m.hexdigest()
客户端应用程序下载配置文件,然后下载图像文件。然后,它使用以下代码在javascript中计算图像文件的校验和。
var xhr = new XMLHttpRequest();
xhr.open('GET', fileurl, true);
xhr.onreadystatechange = function(e) {
if(this.readyState == 4 && this.status == 200) {
var checksum = calculateChecksum(this.responseText);
}
};
xhr.send();
calculateChecksum使用this algorithm来计算javascript中的校验和。但问题是校验和永远不会与配置文件中存在的内容匹配(从服务器上的python代码计算)。同样适用于文本文件。我知道javascript字符串是以UCS-2格式编码的,这可能是校验和计算不正确的原因。