Blake2s class abstract

BLAKE2S (RFC 7693), which can be used both as HashAlgorithm and MacAlgorithm.

By default, DartBlake2s will be used.

Things to know

  • The default hashLengthInBytes / macLength is 32 bytes. You can choose a shorter hash length when you call the constructor. You should NOT truncate the hash yourself.
  • The algorithm was designed to be used directly as MacAlgorithm (no Hmac needed). Maximum secret key size is 32 bytes.
  • Blake2 hash/MAC function family includes also Blake2b.

Example: Hashing a byte list

import 'package:cryptography/cryptography.dart';

Future<void> main() async {
  final algorithm = Blake2s();
  final message = <int>[1,2,3];
  final hash = await algorithm.hash(message);
  print('Hash: ${hash.bytes}');
}

Example: Hashing a sequence of chunks

import 'package:cryptography/cryptography.dart';

void main() async {
  final algorithm = Blake2s();

  // Create a sink
  final sink = algorithm.newSink();

  // Add any number of chunks
  sink.add(<int>[1,2,3]);
  sink.add(<int>[4,5]);

  // Calculate the hash
  sink.close();
  final hash = await sink.hash();

  print('Hash: ${hash.bytes}');
}
Inheritance
Implemented types
Implementers

Constructors

Blake2s({int hashLengthInBytes = defaultHashLengthInBytes})
factory
Blake2s.constructor({int hashLengthInBytes = defaultHashLengthInBytes})
Constructor for subclasses.
const

Properties

blockLengthInBytes int
The internal block size in bytes. This information is required by some algorithms such as Hmac.
no setteroverride
hashCode int
The hash code for this object.
no setteroverride
hashLengthInBytes int
Digest size in bytes.
final
keyStreamUsed int
Number of bytes in key stream used to initialize the MAC algorithm.
no setteroverride
macLength int
Number of bytes in the message authentication code.
no setteroverride
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
supportsAad bool
Whether the algorithm supports Associated Authenticated Data (AAD).
no setteroverride
supportsKeyStreamIndex bool
Whether the algorithm supports key stream index.
no setteroverride

Methods

calculateMac(List<int> bytes, {required SecretKey secretKey, List<int> nonce = const <int>[], List<int> aad = const <int>[]}) Future<Mac>
Calculates message authentication code.
inherited
checkParameters({int? length, required SecretKey secretKey, required int nonceLength, required int aadLength, required int keyStreamIndex}) → void
Checks parameters and throws ArgumentError if they are invalid.
override
hash(List<int> input) Future<Hash>
Calculates hash for the argument.
inherited
newHashSink() HashSink
Constructs a sink for hashing chunks.
inherited
newMacSink({required SecretKey secretKey, List<int> nonce = const <int>[], List<int> aad = const <int>[]}) Future<MacSink>
Constructs a sink for calculating a Mac.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
override
toSync() DartBlake2s
For synchronous computations, returns a pure Dart implementation of the hash algorithm.
override

Operators

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

Constants

defaultHashLengthInBytes → const int
Default value of hashLengthInBytes and macLength.