add hex/base64 formatting option to md5 goodie
parent
5bd74a54da
commit
a5bf4b4f9a
|
@ -10,7 +10,8 @@ zci is_cached => 1;
|
||||||
|
|
||||||
primary_example_queries 'md5 digest this!';
|
primary_example_queries 'md5 digest this!';
|
||||||
secondary_example_queries 'duckduckgo md5',
|
secondary_example_queries 'duckduckgo md5',
|
||||||
'md5sum the sum of a string';
|
'md5sum the sum of a string',
|
||||||
|
'md5 base64 this string';
|
||||||
|
|
||||||
name 'MD5';
|
name 'MD5';
|
||||||
description 'Calculate the MD5 digest of a string.';
|
description 'Calculate the MD5 digest of a string.';
|
||||||
|
@ -32,6 +33,9 @@ sub html_output {
|
||||||
}
|
}
|
||||||
|
|
||||||
handle remainder => sub {
|
handle remainder => sub {
|
||||||
|
#Remove format specifier from e.g 'md5 base64 this'
|
||||||
|
s/^(hex|base64)\s+(.*\S+)/$2/;
|
||||||
|
my $format = $1 || '';
|
||||||
s/^hash\s+(.*\S+)/$1/; # Remove 'hash' in queries like 'md5 hash this'
|
s/^hash\s+(.*\S+)/$1/; # Remove 'hash' in queries like 'md5 hash this'
|
||||||
s/^of\s+(.*\S+)/$1/; # Remove 'of' in queries like 'md5 hash of this'
|
s/^of\s+(.*\S+)/$1/; # Remove 'of' in queries like 'md5 hash of this'
|
||||||
s/^"(.*)"$/$1/; # Remove quotes
|
s/^"(.*)"$/$1/; # Remove quotes
|
||||||
|
@ -39,12 +43,14 @@ handle remainder => sub {
|
||||||
# The string is encoded to get the utf8 representation instead of
|
# The string is encoded to get the utf8 representation instead of
|
||||||
# perls internal representation of strings, before it's passed to
|
# perls internal representation of strings, before it's passed to
|
||||||
# the md5 subroutine.
|
# the md5 subroutine.
|
||||||
my $str = $1;
|
my $str = encode("utf8",$1);
|
||||||
my $md5 = md5_hex(encode "utf8", $str);
|
my $md5;
|
||||||
|
#use approprite output format, default to hex
|
||||||
|
$md5 = $format eq 'base64' ? md5_base64($str) : md5_hex($str);
|
||||||
return $md5, html => html_output($str, $md5);
|
return $md5, html => html_output($str, $md5);
|
||||||
} else {
|
} else {
|
||||||
# Exit unless a string is found
|
# Exit unless a string is found
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
7
t/MD5.t
7
t/MD5.t
|
@ -22,6 +22,13 @@ ddg_goodie_test(
|
||||||
'md5 hash ' => test_zci('0800fc577294c34e0b28ad2839435945', html=>qr/.*/),
|
'md5 hash ' => test_zci('0800fc577294c34e0b28ad2839435945', html=>qr/.*/),
|
||||||
'md5 hash of' => test_zci('8bf8854bebe108183caeb845c7676ae4', html=>qr/.*/),
|
'md5 hash of' => test_zci('8bf8854bebe108183caeb845c7676ae4', html=>qr/.*/),
|
||||||
'md5 hash of password ' => test_zci('5f4dcc3b5aa765d61d8327deb882cf99', html=>qr/.*/),
|
'md5 hash of password ' => test_zci('5f4dcc3b5aa765d61d8327deb882cf99', html=>qr/.*/),
|
||||||
|
'md5 base64 duckduckgo' => test_zci('lomLuFRPpWsDwIzcCYhsbA', html=>qr/.*/),
|
||||||
|
'md5 base64 "duckduckgo"' => test_zci('lomLuFRPpWsDwIzcCYhsbA', html=>qr/.*/),
|
||||||
|
'md5 base64 hex' => test_zci('uNG0Pq5zWHula671dHCeyw', html=>qr/.*/),
|
||||||
|
'md5 hex duckduckgo' => test_zci('96898bb8544fa56b03c08cdc09886c6c', html=>qr/.*/),
|
||||||
|
'md5 hex "duckduckgo"' => test_zci('96898bb8544fa56b03c08cdc09886c6c', html=>qr/.*/),
|
||||||
|
'md5 hex base64' => test_zci('95a1446a7120e4af5c0c8878abb7e6d2', html=>qr/.*/),
|
||||||
|
'md5 base64 hash of duckduckgo' => test_zci('lomLuFRPpWsDwIzcCYhsbA', html=>qr/.*/),
|
||||||
);
|
);
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
Loading…
Reference in New Issue