36 lines
1.3 KiB
Dart
36 lines
1.3 KiB
Dart
// Copyright (c) 2023, Sudipto Chandra
|
|
// All rights reserved. Check LICENSE file for details.
|
|
|
|
import 'keccak/keccak.dart';
|
|
|
|
/// Implementation of 128-bit arbitrary hash generator based on [KeccakHash].
|
|
class Shake128Hash extends KeccakHash {
|
|
/// Create a SHAKE-128 hash generator with arbitrary output size.
|
|
///
|
|
/// If [outputLengthInBytes] is 0, it will generate an infinite sequence of
|
|
/// numbers with generate(), but the digest() will return an empty string.
|
|
///
|
|
/// If [outputLengthInBytes] is null, 128-bit output is generated by default.
|
|
Shake128Hash([int? outputLengthInBytes])
|
|
: super(
|
|
stateSize: 128 >>> 3,
|
|
paddingByte: 0x1f,
|
|
outputSize: outputLengthInBytes,
|
|
);
|
|
}
|
|
|
|
/// Implementation of 256-bit arbitrary hash generator based on [KeccakHash].
|
|
class Shake256Hash extends KeccakHash {
|
|
/// Create a SHAKE-256 hash generator with arbitrary output size.
|
|
///
|
|
/// If [outputLengthInBytes] is 0, it will generate an infinite sequence of
|
|
/// numbers with generate(), but the digest() will return an empty string.
|
|
///
|
|
/// If [outputLengthInBytes] is null, 256-bit output is generated by default.
|
|
Shake256Hash([int? outputLengthInBytes])
|
|
: super(
|
|
stateSize: 256 >>> 3,
|
|
paddingByte: 0x1f,
|
|
outputSize: outputLengthInBytes,
|
|
);
|
|
}
|