Как декодировать облачное хранилище Google md5 ha sh в строку, созданную генераторами ha sh в Node JS - PullRequest
0 голосов
/ 09 апреля 2020

Облачное хранилище Google выдает md5-хэши объектов , закодированных в base64. Примером будет H0m5T/tigkNJLqL6+z9A7Q==. Я пытался преобразовать его, используя btoa (), но это приводит к I9O{bCI."z{?@m вместо ожидаемого b1f4f9a523e36fd969f4573e25af4540.

Я получаю строку с File.metadata.md5Hash, описанным здесь

Есть ли способ преобразовать этот base64 -> H0m5T/tigkNJLqL6+z9A7Q== в эту строку -> b1f4f9a523e36fd969f4573e25af4540 в node.js?

Код для справки:

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"))
  }
}

1 Ответ

0 голосов
/ 09 апреля 2020

Кажется, у меня был неправильный мыслительный процесс.

Я думал: получить данные -> получить га sh -> кодировать в base64

Проблема была не в том, как это работает. Вместо этого вам нужно: получить данные -> получить ха sh AS base64. Обычно программа выводит его в шестнадцатеричном формате, что хорошо для большинства случаев, но в Google это был base64 md5, отличный от шестнадцатеричного.

Пример того, как получить md5 ha sh как 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 base64
...