Flutter RNCryptor package

A high-level AES encryption/decryption library compatible with Rob Napier's RNCryptor for iOS. This implementation is based on JSCryptor and uses pointycastle under the hood.

RNCryptor specification can be found here.


First import it in your Dart code:

import 'package:rncryptor/rncryptor.dart';

Using RNCryptor is simple, just call the encrypt method to encrypt your text by using the specified password:

var encrypted = RNCryptor.encrypt('my password', 'some plain text');

Call decrypt method to decrypt the encrypted text:

var encrypted = RNCryptor.decrypt('my password', 'an encrypted message');

Converting a password into a key is intentionally slow. In case your app encrypts/decrypts many short messages, using password would have a significant performance impact. In that case using keys would be preferred.

Use the generateKey method to generate a new key from a password and a salt:

var salt = RNCryptor.generateSalt();
var encryptKey = RNCryptor.generateKey('my password', salt);

RNCryptor uses two 256-bit (32 byte) length keys for encryption and authentication. The encryptWithKey method encrypts the message with the specified keys:

RNCryptor.encryptWithKey(encryptKey, hmacKey, 'some plain text');

Call the decryptWithKey method to decrypt a message encrypted with a known key:

RNCryptor.decryptWithKey(encryptKey, hmacKey, 'an encrypted message');