Blake2b class abstract
BLAKE2B (RFC 7693), which can be used both as HashAlgorithm and MacAlgorithm.
By default, DartBlake2b will be used.
Things to know
- The default hashLengthInBytes / macLength is 64 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 64 bytes.
- Blake2 hash/MAC function family includes also Blake2s.
Example: Hashing a byte list
import 'package:cryptography/cryptography.dart';
Future<void> main() async {
final algorithm = Blake2b();
final message = <int>[1,2,3];
final hash = await algorithm.hash(message);
print('Hash: ${hash.bytes}');
}
If you need synchronous computations, use DartBlake2b.
Example: Hashing a sequence of chunks
import 'package:cryptography/cryptography.dart';
void main() async {
final algorithm = Blake2b();
// 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
-
- Object
- HashAlgorithm
- Blake2b
- Implemented types
- Implementers
Constructors
- Blake2b({int hashLengthInBytes = defaultHashLengthInBytes})
-
factory
- Blake2b.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
-
replace(
{int? hashLength}) → Blake2b - Enables you to replace hashLengthInBytes.
-
toString(
) → String -
A string representation of this object.
override
-
toSync(
) → DartBlake2b -
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.