从 functions.storage.ObjectMetadata.md5Hash 返回无效哈希

Invalid Hash returned from functions.storage.ObjectMetadata.md5Hash

我有一个云功能,可以在 cloudbuild 完成后在 firestore 中创建一个新文档。

    export const onNewFirmwareBuild = functions.storage.bucket(FIRMWARE_BUCKET).object().onFinalize(async (object) => {

    await admin.firestore()
        .collection('products').doc(PRODUCT)  
        .collection('firmware').add({
            fullname: object.name,
            md5Hash: object.md5Hash
        });
  );

哈希值为:

c/9/vkntQHBsRhRA7r+l1w==

它不是有效的 md5Hash,因为它没有 128 bits 并且包含非法字符。

但是 artifacts.json 中的散列是正确的。

为什么哈希值不对?是否有变通方法或从 .json 中获取散列并将其添加到文档中的简单方法?

您正在接收编码为文件的 base64 的原始 MD5(无十六进制值)。

有必要解码您的哈希并将解码后的字符串转换为十六进制值,例如

Md5 from google
"c/9/vkntQHBsRhRA7r+l1w==" 

decoded and hex value:
"73ff7fbe49ed40706c461440eebfa5d7"

我用这个 Cyber​​Chef recipe 来转换 MD5 base64