从 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"
我用这个 CyberChef recipe 来转换 MD5 base64
我有一个云功能,可以在 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"
我用这个 CyberChef recipe 来转换 MD5 base64