NAME

Crypt::Sodium::XS::shorthash - Short-input hashing

SYNOPSIS

  use Crypt::Sodium::XS::shorthash ":default";

my $key = shorthash_keygen;
my $msg = "short input";

my $hash = shorthash($msg, $key);

DESCRIPTION

Crypt::Sodium::XS::shorthash outputs short but unpredictable (without knowing the secret key) values suitable for picking a list in a hash table for a given key. This function is optimized for short inputs.

The output of this function is only 64 bits. Therefore, it should not be considered collision-resistant.

Use cases:

  • Hash tables

  • Probabilistic data structures such as Bloom filters

  • Integrity checking in interactive protocols

FUNCTIONS

Nothing is exported by default. A :default tag imports the functions and constants documented below. A separate :<primitive> import tag is provided for each of the primitives listed in "PRIMITIVES". These tags import the shorthash_<primitive>_* functions and constants for that primitive. A :all tag imports everything.

shorthash_keygen

my $key = shorthash_keygen($flags);

$flags is optional. It is the flags used for the $key Crypt::Sodium::XS::MemVault. See Crypt::Sodium::XS::ProtMem.

Returns a Crypt::Sodium::XS::MemVault: a new secret key of "shorthash_KEYBYTES" bytes.

shorthash

my $hash = shorthash($message, $key);

$message is the message to hash. It may be a Crypt::Sodium::XS::MemVault.

$key is the secret key used in the hash. It must be "shorthash_KEYBYTES" bytes. It may be a Crypt::Sodium::XS::MemVault.

Returns the hash output of "BYTES" bytes.

CONSTANTS

shorthash_PRIMITIVE

my $default_primitive = shorthash_PRIMITIVE();

Returns the name of the default primitive.

shorthash_BYTES

my $hash_size = shorthash_BYTES();

Returns the size, in bytes, of hash output.

shorthash_KEYBYTES

my $key_size = shorthash_KEYBYTES();

Returns the size, in bytes, of a secret key.

PRIMITIVES

All functions have shorthash_<primitive>-prefixed counterparts (e.g., shorthash_siphashx24_keygen).

  • siphash24 (default)

  • siphashx24

SEE ALSO

Crypt::Sodium::XS
Crypt::Sodium::XS::OO::shorthash
https://doc.libsodium.org/hashing/short-input_hashing

FEEDBACK

For reporting bugs, giving feedback, submitting patches, etc. please use the following:

AUTHOR

Brad Barden <perlmodules@5c30.org>

COPYRIGHT & LICENSE

Copyright (c) 2022 Brad Barden. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.