计算图像文件的客户端 MD5 哈希以匹配 Firebase 计算的哈希值?

Calculate client side MD5 hash of an image file to match one calculated by Firebase?

有没有一种方法可以在我的 Angular Map 中计算客户端图像文件的 MD5,当我将该文件存储在 Firestore 上时,它会匹配 MD5?我需要能够确认用户文件与存储在 firebase 中的参考版本相匹配,而无需再次上传。

我可以从本地计算机上的文件对象获取数组缓冲区,但无法在本地完成 md5 计算以匹配 Firebase returns。

我得到的结果看起来与 Firebase 报告的 md5 完全不同,所以我认为我完全不在正确的轨道上:

let file = target.files[0];
let reader = new FileReader();
reader.onload = function (event) {
  data = event.target.result;
  let ret: any = data;
  if (data) {
    let len = ret.byteLength;
    let uintArBuff = new Uint8Array(ret);   //Does an array buffer convert to a Uint8Array?
    let md5 = new Md5();
    let hash = md5.appendByteArray(uintArBuff).end();  
    console.log(hash);
  }  
}
reader.readAsArrayBuffer(file);

上面的结果看起来像 29e10414c7c7b7adb61330b02f8f3ddc,而 firebase 报告的 MD5 是 KeEEFMfHt622EzCwL4893A== 所以我想我完全走错了树。甚至没有相同长度的散列...。 .

我会发表评论,但声誉不允许我发表评论。

KeEEFMfHt622EzCwL4893A== 是 base64 编码的。你的是 hex 编码的。

我刚刚使用了一个在线转换并检查它们是否匹配。