AES encryption/decryption for react-native
npm install --save react-native-aes-cryptoor
yarn add react-native-aes-crypto- See Linking Libraries OR
- Drag RCTAes.xcodeproj to your project on Xcode.
- Click on your main project file (the one that represents the .xcodeproj) select Build Phases and drag libRCTAes.a from the Products folder inside the RCTAes.xcodeproj.
...
include ':react-native-aes-crypto'
project(':react-native-aes-crypto').projectDir =newFile(rootProject.projectDir, '../node_modules/react-native-aes-crypto/android')- In
android/app/build.gradle
...
dependencies {
...
compile project(':react-native-aes-crypto')
}- register module (in MainApplication.java)
......
importcom.tectiv3.aes.RCTAesPackage;
......
@OverrideprotectedList<ReactPackage> getPackages() {
......
newRCTAesPackage(),
......
}import{NativeModules,Platform}from'react-native'varAes=NativeModules.AesconstgenerateKey=(password,salt,cost,length)=>Aes.pbkdf2(password,salt,cost,length)constencrypt=(text,keyBase64)=>{returnAes.randomKey(32).then(iv=>{returnAes.encrypt(text,keyBase64,iv).then(cipher=>({
cipher,
iv,}))})}constdecrypt=(encryptedData,key)=>Aes.decrypt(encryptedData.cipher,key,encryptedData.iv)try{generateKey('Arnold','salt',5000,512).then(key=>{console.log('Key:',key)encrypt('These violent delights have violent ends',key).then(({ cipher, iv })=>{console.log('Encrypted:',cipher)decrypt({ cipher, iv },key).then(text=>{console.log('Decrypted:',text)}).catch(error=>{console.log(error)})Aes.hmac256(cipher,key).then(hash=>{console.log('HMAC',hash)})}).catch(error=>{console.log(error)})})}catch(e){console.error(e)}asyncfunctionasyncDecrypt(cipher,key,iv){try{vartext=awaitdecrypt({ cipher, iv },key)console.log(text)returntext}catch(e){console.error(e)}}encrypt(text, key, iv)decrypt(base64, key, iv)pbkdf2(text, salt, cost, length)hmac256(cipher, key)sha1(text)sha256(text)sha512(text)randomUuid()randomKey(length)