react-native aes加密

问题描述: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y199710

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值