使用crypto-jsReact NativeSHA 256哈希器

w7t8yxp5  于 2022-12-23  发布在  React
关注(0)|答案(1)|浏览(224)

我正在尝试在React Native中使用crypto-jspbkdf2算法。我发誓我让它工作,从我的电脑走开,一切都坏了...
我尝试通过await pbkdf2Sync(password, nonceData.salt, {hasher:cryptojs.algo.SHA256, iterations: 500, keySize: 32}).toString().substring(0,64);创建密码哈希,但cryptojs.algo.SHA256未定义。
我进口的东西都是这样的

import pbkdf2Sync from 'crypto-js/pbkdf2'
import cryptojs from 'crypto-js/core'

但是如果我将cryptojs.algo打印到控制台,我会发现它只有SHA1、HMAC和PBKDF2。
如何让SHA256算法工作?
我使用的是cryptojs 3.3.0 "crypto-js": "^3.3.0",

1zmg4dgp

1zmg4dgp1#

2023年现代浏览器大部分都支持Crypto API,如果你的目标用户使用的是chrome、edge等现代浏览器,那就用Crypto API吧:

const text = 'hello';

async function digestMessage(message) {
  const msgUint8 = new TextEncoder().encode(message);                           // encode as (utf-8) Uint8Array
  const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);           // hash the message
  const hashArray = Array.from(new Uint8Array(hashBuffer));                     // convert buffer to byte array
  const hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string
  return hashHex;
}

const result = await digestMessage(text);
console.log(result)

然后可以通过online sha256 tool验证结果。

相关问题