如何在 React native 中加密数据(使用 Expo)

How to Encrypt data in React native (Using Expo)

我正在尝试使用给定的密钥和 iV 简单地加密消息。我已经尝试了几个库来实现这一点,但 Expo 与其中任何一个都不兼容。我找不到 Expo 的任何加密库(支持 AES)。我想我的问题是:How do I encrypt data in React Native 运行 Expo

Ps : 我对 expo-crypto

不感兴趣

使用 crypto-js@3.1 , 3.1.x 版本使用 Math.random() 并且不需要节点 "crypto" 包。它不如最新版本安全,但对我有用。

yarn add crypto-js@3.1 

我只用它来解密。如果您确实出于某些安全要求需要它,我建议您在服务器节点环境中对其进行加密。

我决定将 jshashes 用于我的 React-native 和 Expo 项目。该模块的目标是在不依赖节点的情况下以纯 javascript 重新实现哈希节点的加密函数:

yarn add jshashes

另一种可能性(我所做的)是使用 CryptoES 库。

https://www.npmjs.com/package/crypto-es

找了半天终于找到了,是CryptoJS库3.1版本的延续开发,可以和Expo一起使用

首先使用这个命令:

npm i crypto-es 

那么现在您应该使用此命令导入它:

import CryptoES from "crypto-es";

那么你应该加密文本: 例如:

var mytexttoEncryption = "Hello" 
const encrypted = CryptoES.AES.encrypt(mytexttoEncryption ,"your password").toString();

现在解密: 使用此命令安装 crypto-js 包:

npm i crypto-js 

然后解密

var C = require("crypto-js");

 var Decrypted = C.AES.decrypt(E, "your password");
var result =Decrypted.toString(C.enc.Utf8);

console.log(result)

所以用这个就可以了

npm i --save crypto-es crypto-js 
import CryptoES from "crypto-es";

那么您应该对文本进行加密,例如:

var mytexttoEncryption = "Hello" 
const encrypted = CryptoES.AES.encrypt(mytexttoEncryption ,"your password").toString();

var C = require("crypto-js");

var Decrypted = C.AES.decrypt(E, "your password");
var result =Decrypted.toString(C.enc.Utf8);

console.log(result)