add tests for -m 27800 = MurmurHash 3

pull/3316/head
philsmd 2 years ago
parent 15a0ad5903
commit f1c19eaeca
No known key found for this signature in database
GPG Key ID: 4F25D016D9D6A8AF

@ -48,6 +48,7 @@ cpan install Authen::Passphrase::LANManager \
Digest::Keccak \
Digest::MD4 \
Digest::MD5 \
Digest::MurmurHash3 \
Digest::Perl::MD5 \
Digest::SHA \
Digest::SHA1 \

@ -19,7 +19,7 @@ TC_MODES="6211 6212 6213 6221 6222 6223 6231 6232 6233 6241 6242 6243 29311 2931
VC_MODES="13711 13712 13713 13721 13722 13723 13731 13732 13733 13741 13742 13743 13751 13752 13753 13761 13762 13763 13771 13772 13773 13781 13782 13783"
# List of modes which either are OPTS_TYPE_PT_NEVERCRACK or produce collisions
NEVER_CRACK="9720 9820 14900 18100"
NEVER_CRACK="9720 9820 14900 18100 27800"
# List of modes which return a different output hash format than the input hash format
NOCHECK_ENCODING="16800 22000"

@ -0,0 +1,51 @@
#!/usr/bin/env perl
##
## Author......: See docs/credits.txt
## License.....: MIT
##
use strict;
use warnings;
use Digest::MurmurHash3 qw (murmur32);
sub module_constraints { [[-1, -1], [-1, -1], [0, 31], [8, 8], [-1, -1]] }
sub module_generate_hash
{
my $word = shift;
my $salt = shift;
my $seed = unpack ("I>", pack ("H*", $salt));
my $digest = murmur32 ($word, $seed);
$digest = unpack ("H*", pack ("I>", $digest));
my $hash = sprintf ("%s:%s", $digest, $salt);
return $hash;
}
sub module_verify_hash
{
my $line = shift;
my ($hash, $seed, $word) = split (':', $line);
return unless defined $hash;
return unless defined $seed;
return unless defined $word;
return unless ($hash =~ m/^[0-9a-fA-F]{8}$/);
return unless ($seed =~ m/^[0-9a-fA-F]{8}$/);
my $word_packed = pack_if_HEX_notation ($word);
my $new_hash = module_generate_hash ($word_packed, $seed);
return ($new_hash, $word);
}
1;
Loading…
Cancel
Save