我需要在我作为网络应用部署的应用脚本中计算通过ajax上传到Google云端硬盘的文件的SHA-256哈希值。在服务器代码中,我正在计算它:
function getHash(file) {
var hashBytes = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, file.getBlob().getDataAsString());
// convert raw bytes into a base16-encoded string
var hash = "";
for(var i=0; i<hashBytes.length; i++) {
var byte = hashBytes[i];
if(byte < 0) {
byte += 256;
}
var byteString = byte.toString(16);
// if byte is not represented by 2 chars it must be 0-padded
if(byteString.length == 1) {
byteString = '0' + byteString;
}
hash += byteString;
return hash;
}
然而,计算的散列不同于我对同一文件得到的散列,例如执行
shasum -a 256 myfile
在bash shell中。我的getHash()函数有什么问题吗?
我需要此功能才能处理任何文件类型。