Cipher class abstract

A cipher that supports encrypt() and decrypt().

Available algorithms

Example

An example of using AesCtr and Hmac:

import 'package:cryptography_plus/cryptography_plus.dart';

Future<void> main() async {
  final message = <int>[1,2,3];

  // AES-CTR with 128 bit keys and HMAC-SHA256 authentication.
  final algorithm = AesCtr.with128bits(
    macAlgorithm: Hmac.sha256(),
  );
  final secretKey = await algorithm.newSecretKey();
  final nonce = algorithm.newNonce();

  // Encrypt
  final secretBox = await algorithm.encrypt(
    message,
    secretKey: secretKey,
  );
  print('Nonce: ${secretBox.nonce}')
  print('Ciphertext: ${secretBox.cipherText}')
  print('MAC: ${secretBox.mac.bytes}')

  // Decrypt
  final clearText = await algorithm.decrypt(
    secretBox,
    secretKey: secretKey,
  );
  print('Cleartext: $clearText');
}
Implementers

Constructors

Cipher({Random? random})
Constructor for subclasses.
const

Properties

hashCode → int
The hash code for this object.
no setteroverride
macAlgorithm → MacAlgorithm
Message authentication code (MacAlgorithm) used by the cipher.
no setter
nonceLength → int
Number of bytes in the nonce ("Initialization Vector", "IV", "salt").
no setter
random → Random?
Random number generator used by newSecretKey for generating secret keys.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
secretKeyLength → int
Number of bytes in the SecretKey.
no setter

Methods

checkParameters({int? length, required SecretKey secretKey, required int nonceLength, int aadLength = 0, int keyStreamIndex = 0}) → void
Checks parameters for encrypt / decrypt and throws ArgumentError if any is invalid.
cipherTextLength(int clearTextLength) → int
Calculates the length of the ciphertext given a clear text length.
decrypt(SecretBox secretBox, {required SecretKey secretKey, List<int> aad = const <int>[], Uint8List? possibleBuffer}) → Future<List<int>>
Decrypts SecretBox and returns the bytes.
decryptStream(Stream<List<int>> stream, {required SecretKey secretKey, required List<int> nonce, required FutureOr<Mac> mac, List<int> aad = const [], bool allowUseSameBytes = false}) → Stream<List<int>>
Decrypts a Stream of bytes.
decryptString(SecretBox secretBox, {required SecretKey secretKey}) → Future<String>
Calls decrypt and then converts the bytes to a string by using utf8 codec.
encrypt(List<int> clearText, {required SecretKey secretKey, List<int>? nonce, List<int> aad = const <int>[], Uint8List? possibleBuffer}) → Future<SecretBox>
Encrypts bytes and returns SecretBox.
encryptStream(Stream<List<int>> stream, {required SecretKey secretKey, required List<int> nonce, required void onMac(Mac mac), List<int> aad = const [], bool allowUseSameBytes = false}) → Stream<List<int>>
Encrypts a Stream of bytes.
encryptString(String clearText, {required SecretKey secretKey}) → Future<SecretBox>
Converts a string to bytes using utf8 codec and then calls encrypt.
newCipherWand() → Future<CipherWand>
Constructs a CipherWand that uses this implementation and a new random secret key (that can't be extracted).
newCipherWandFromSecretKey(SecretKey secretKey, {bool allowEncrypt = true, bool allowDecrypt = true}) → Future<CipherWand>
Constructs a CipherWand that uses this implementation and the given SecretKey.
newNonce() → List<int>
Generates a new nonce.
newSecretKey() → Future<SecretKey>
Generates a new SecretKey.
newSecretKeyFromBytes(List<int> bytes) → Future<SecretKey>
Constructs a new SecretKey from the bytes.
newState() → CipherState
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
override
toSync() → DartCipher
Returns a synchronous, pure Dart implementation of this cipher.

Operators

operator ==(Object other) → bool
The equality operator.
override