问题描述:rn使用aes加密生成随机aesKey时,报错 Error:Nativecrypto modulecouldnotbeusedgetsecurerandom number.

 解决方法1

1、下载
npm i react-native-securerandom
npm install react-native-buffer --save
2、使用

注:这里是在封装文件里修改得

import {generateSecureRandom} from 'react-native-securerandom';

 export const getRandomAESKey = async () => {

  const randomBytes = await generateSecureRandom(22); // 生成 32 字节的伪随机数
  return randomBytes

};
3、页面使用

注:在需要使用得页面中

    // 随机aes-key
    getRandomAESKey(22).then(res => {
      //  [192, 193, 128, 71, 163, 255, 33, 173, 125, 12, 254, 231, 196, 171, 4, 234, 72, 140, 49, 133, 135, 154] 
      console.log(res, 'key钥匙res');
      const key = uint8ArrayToString(res);
      console.log(key, 'key钥匙');
      setAESKey(key);
      // RSA加密 aesKey
      const encrypt = new JSEncrypt();
      encrypt.setPublicKey(publicKeyBase64);
      let encrypted = encrypt.encrypt(key);
      console.log(encrypted, '加密key');
      setEnAesKey(encrypted);
    });

  const uint8ArrayToString = array => {
    const aesKey = array.map(num => {
      const hex = num.toString(16).padStart(2, '0');
      return hex;
    }).join('').slice(0,22)+'=='
    console.log(aesKey, 'aesKey');

    return aesKey;
  };

解决方法2

降低crypto-js版本

1、在package.json内crypto-js版本改为3.1.9-1
"crypto-js": "^3.1.9-1",
2、下载
npm i
3、启动项目
 yarn android

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐