Как создать sha256 из строки, используя криптографию

#node.js #expo

#node.js #выставка

Вопрос:

Итак, я пытаюсь создать одноразовый номер, следуя этому примеру кода

    let randomString = uuid();

  // create a sha256 of randomString, this will be the nonce sent to apple during authentication
  const nonce = await Crypto.digestStringAsync(
    Crypto.CryptoDigestAlgorithm.SHA256,
    randomString
  );
  

Однако этот пример предназначен для версии expo «Crypto», и я использую криптографию, встроенную в node.js и попытался сделать это

     let randomString = uuid(); // <--- this just creates a random string for me

   const nonce = await crypto
      .createHmac('sha256', randomString)
      .update(uuid())
      .digest('string');

  

Но, похоже, это не создает одноразовый номер в нужном мне формате. Кто-нибудь, кто знает криптографию expo и криптографию, встроенную в node.js знаете, что я делаю не так? Я почти уверен, что я просто не использую nodejs crypto так же, как expo crypto example, так что, может быть, кто-нибудь, кто знает их обоих, может сказать мне, какой была бы nodejs crypto версия этого expo crypto example?

Ответ №1:

Формат дайджеста Expo по умолчанию — hex (doc)

параметры CryptoDigestOptions Формат строки дайджеста. По умолчанию: CryptoDigestOptions.HEX

Итак, вам просто нужно изменить .digest("string") на .digest("hex")

 let randomString = uuid()

const nonce = await crypto
  .createHmac("sha256", randomString)
  .update(uuid())
  .digest("hex")