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