You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中将Google Cloud Storage的Base64 MD5哈希转为标准字符串

解决Google Cloud Storage MD5哈希转十六进制字符串的问题

嘿,我明白你遇到的问题了——你拿到的是GCS返回的Base64编码MD5,想转成十六进制格式的哈希字符串,但之前用toString("ascii")得到了乱码,这是因为你选错了编码格式!

问题根源

GCS返回的md5Hash是二进制MD5值的Base64编码,解码后是16字节的二进制数据。如果你直接转成ASCII字符串,很多二进制字节对应的是不可打印字符,就会出现像I9O{bCI."z{?@m这样的乱码。而你想要的十六进制字符串,是把每个二进制字节转换成两位十六进制字符的结果。

修正后的代码

只需要把toString("ascii")改成toString("hex")就行,完整代码如下:

async function getAllmd5() {
  const { Storage } = require('@google-cloud/storage');
  const storage = new Storage();
  const bucket = storage.bucket('example');
  const [files] = await bucket.getFiles();
  
  for (const file of files) {
    // 解码Base64,再转成十六进制字符串
    const hexMd5 = Buffer.from(file.metadata.md5Hash, 'base64').toString('hex');
    console.log(`文件 ${file.name} 的MD5哈希:${hexMd5}`);
  }
}

验证示例

拿你提到的示例Base64值H0m5T/tigkNJLqL6+z9A7Q==来测试:

const base64Md5 = 'H0m5T/tigkNJLqL6+z9A7Q==';
const hexMd5 = Buffer.from(base64Md5, 'base64').toString('hex');
console.log(hexMd5); // 输出: b1f4f9a523e36fd969f4573e25af4540

完全符合你想要的结果!

内容的提问来源于stack exchange,提问作者Expto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:27:42