问题
I'm trying to simply encrypt a message using a given key and iV. I've tried several libraries to achieve this but Expo isn't compatible with any of them. I couldn't find any encryption libraries for Expo (That support AES). I guess my question is : How do I encrypt data in React Native running Expo
Ps : I am not interested in expo-crypto
回答1:
Another possibility (what I did) is to use the CryptoES library.
https://www.npmjs.com/package/crypto-es
After long search I found it, it is a continued development of the 3.1 version of the CryptoJS library and can be used with Expo.
回答2:
Use crypto-js@3.1 , 3.1.x version use Math.random() and doesn't require node "crypto" package. It's not as safe as the latest version but works for me.
yarn add crypto-js@3.1
I only use it for decrypting. If you really need it for some security requirements I suggest you encrypt it in server node enviroment.
回答3:
I decided to use jshashes
for my React-native & Expo project. The goal of this module is to reimplement hash node's crypto functions in pure javascript without dependency on node:
yarn add jshashes
回答4:
first use this command :
npm i crypto-es
then now you should import it with this command :
import CryptoES from "crypto-es";
then you should encrypt the text : for example :
var mytexttoEncryption = "Hello"
const encrypted = CryptoES.AES.encrypt(mytexttoEncryption ,"your password").toString();
now for decryption : install the package of crypto-js with this command :
npm i crypto-js
then lets decrypt it
var C = require("crypto-js");
var Decrypted = C.AES.decrypt(E, "your password");
var result =Decrypted.toString(C.enc.Utf8);
console.log(result)
so use this it will be ok
来源:https://stackoverflow.com/questions/60733815/how-to-encrypt-data-in-react-native-using-expo