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
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< stream, {required SecretKey secretKey, required List<int> >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< stream, {required SecretKey secretKey, required List<int> >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