Cipher class abstract

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

Available algorithms

Example

An example of using AesCtr and Hmac:

import 'package:cryptography/cryptography.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