谷歌云存储为md5提供了以base64编码的对象的散列。H0m5T/tigkNJLqL6+z9A7Q==就是一个例子。我尝试使用btoa()来转换它,但是这会导致I9O{bCI."z{?@m而不是预期的b1f4f9a523e36fd969f4573e25af4540。
我得到了File.metadata.md5Hash描述的这里字符串
有没有办法将base64 -> H0m5T/tigkNJLqL6+z9A7Q==转换为node.js中的字符串-> b1f4f9a523e36fd969f4573e25af4540?
供参考的代码:
async function getAllmd5()
{
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
var bucket = storage.bucket('example');
var [files] = await bucket.getFiles();
for (var i = 0; i < files.length; i++)
{
console.log(Buffer.from(files[i].metadata.md5Hash, 'base64').toString("ascii"))
}
}发布于 2020-04-09 19:30:24
看来我的思维过程不对。
我在想:获取数据->获取哈希->编码到base64
问题不在于它是如何运作的。您需要做的是:获取数据、->、get哈希作为base64。通常,一个程序会将它输出为十六进制,这在大多数情况下都很好,但在谷歌的base64 md5中,它与十六进制不同。
如何将md5哈希作为base64获取的示例:
//The modules we need:
const { md5 } = require('crypto-md5');
const { fs } = require('fs');
var filename "example.txt";
//Read the file content
var filecontent = fs.readFileSync(path.join(__dirname, filename));
var hash = md5(filecontent, 'base64'); //Generate the md5 AS base64https://stackoverflow.com/questions/61124609
复制相似问题