Skip to content

tectiv3/react-native-aes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

118 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

React Native AES

AES encryption/decryption for react-native

Installation

npm install --save react-native-aes-crypto

or

yarn add react-native-aes-crypto

Installation (iOS)

Using CocoaPods (React Native 0.60 and higher)
cd ios pod install
Using React Native Link (React Native 0.59 and lower)

Run react-native link react-native-aes-crypto after which you should be able to use this library on iOS.

Installation (Android)

React Native 0.60 and higher
  • Linking is done automatically
Using React Native Link (React Native 0.59 and lower)
  • In android/settings.gradle
... include ':react-native-aes-crypto' project(':react-native-aes-crypto').projectDir = new File(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)
...... import com.tectiv3.aes.AesPackage; ...... @Override protected List<ReactPackage> getPackages() { ...... new AesPackage(), // or // packages.add(new AesPackage()); ...... }

Usage

Demo project

link

Example

import { NativeModules, Platform } from 'react-native' import Aes from 'react-native-aes-crypto' const generateKey = (password, salt, cost, length) => Aes.pbkdf2(password, salt, cost, length, 'sha256') const encryptData = (text, key) => { return Aes.randomKey(16).then(iv => { return Aes.encrypt(text, key, iv, 'aes-256-cbc').then(cipher => ({ cipher, iv, })) }) } const decryptData = (encryptedData, key) => Aes.decrypt(encryptedData.cipher, key, encryptedData.iv, 'aes-256-cbc') try { generateKey('Arnold', 'salt', 5000, 256).then(key => { console.log('Key:', key) encryptData('These violent delights have violent ends', key) .then(({ cipher, iv }) => { console.log('Encrypted:', cipher) decryptData({ 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) }

Or

async function asyncDecrypt(cipher, key, iv) { try { var text = await decryptData({ cipher, iv }, key) console.log(text) return text } catch (e) { console.error(e) } }

methods

  • encrypt(text, key, iv, algorithm)
  • decrypt(base64, key, iv, algorithm)
  • pbkdf2(text, salt, cost, length, algorithm)
  • hmac256(cipher, key)
  • hmac512(cipher, key)
  • sha1(text)
  • sha256(text)
  • sha512(text)
  • randomUuid()
  • randomKey(length)

About

Native module for AES encryption

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors