Невозможно получить читаемую закодированную строку - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь использовать библиотеку google-kms nodejs.

Я ожидал, что конечным результатом будет зашифрованный текст, но я получу буфер, если я не решу base64 или если я это сделаю, то получу что-то вроде $�k+��l�k��:

Кто-то знает, что не так, r мои ожидания неверны в отношении закодированного текста.

exports.encryptKMS = async (req, res) => {
  let message = req.query.message || req.body.message || 'Hello World!';

  const projectId = 'xxx';

  const kms = require('@google-cloud/kms');
  const client = new kms.KeyManagementServiceClient();

  const locationId = 'global';

  const keyRingId = 'Test-Ring-01';

  const cryptoKeyId = 'Test-Crypto-01';

  const cryptoKeyPath = client.cryptoKeyPath(
    projectId,
    locationId,
    keyRingId,
    cryptoKeyId
  );

const [result] = await client.encrypt({name: cryptoKeyPath, plaintext: message});

  console.log(result);

  const cryptoText = Buffer.from(result.ciphertext, 'base64').toString('utf-8');

  console.log(cryptoText);

  res.status(200).send(cryptoText);
}

1 Ответ

0 голосов
/ 08 января 2020

Мне кажется, это правильно, зашифрованный объект будет двоичной строкой в ​​кодировке base64, в которой вы не сможете увидеть какую-либо структуру. Если вы возьмете этот результат и вернете его обратно в Decrypt, вы должны восстановить исходное сообщение.

Если вам нужна читаемая строка, пожалуйста, предоставьте больше информации - есть такая вещь, как " Форматно-сохраняющее шифрование ", которая пытается зашифровать данные таким образом, чтобы они продолжали быть в формате, совместимом со входом, когда системы не готовы обрабатывать зашифрованные данные. Cloud KMS не поддерживает шифрование с сохранением формата, но у меня могут быть некоторые предложения в зависимости от того, что вам нужно.

Спасибо за использование GCP и Cloud KMS!

...