Skip to content

Pseudonymous-coders/react-native-aes

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 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)

  • 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.

Installation (Android)

Untested!

...
include ':react-native-aes'
project(':react-native-aes').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-aes/android/RCTAes')
  • In android/app/build.gradle
...
dependencies {
    ...
    compile project(':react-native-aes')
}
  • register module (in MainApplication.java)
......
import com.tectiv3.aes.RCTAesPackage;

......

@Override
protected List<ReactPackage> getPackages() {
   ......
   new RCTAesPackage(),
   ......
}

Usage

Example

import { NativeModules, Platform } from 'react-native';
var Aes = NativeModules.Aes;


const generateKey = (password, salt, cost, length) => Aes.pbkdf2(password, salt, cost, length);

const encrypt = (text, keyBase64) => {
    var ivBase64 = "base64 random 16 bytes string";
    return Aes.encrypt(text, keyBase64, ivBase64).then(cipher => ({ cipher, iv: ivBase64 }));
};

const decrypt = (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);
            });
            
            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 decrypt({ cipher, iv }, key);
        console.log(text);
        return text;
    } catch (e) {
        console.error(e);
    }
}

methods

  • 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)

About

Native module for AES encryption

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Objective-C 53.9%
  • Java 43.6%
  • Ruby 2.2%
  • JavaScript 0.3%