Hashids

Hashids lets you obfuscate numerical identifiers via reversible mapping.

Example

h = Hashids.new(salt: "my salt")
encoded = Hashids.encode(h, [1,2,3])
{:ok, [1,2,3]} = Hashids.decode(h, encoded)
Source

Summary

decode!(s, data)

Decode the given iodata back into a list of numbers

decode(hashids, data)

Decode the given iodata back into a list of numbers

encode(s, number)

Encode the given number or a list of numbers

new(options \\ [])

Create a struct containing the configuration options for Hashids. It should be passed to encode/2 and decode/2

Functions

decode(hashids, data)

Specs:

  • decode(t, iodata) :: {:ok, [non_neg_integer]} | {:error, :invalid_input_data}

Decode the given iodata back into a list of numbers.

Source
decode!(s, data)

Specs:

  • decode!(t, iodata) :: [non_neg_integer] | no_return

Decode the given iodata back into a list of numbers.

Will raise a Hashids.DecodingError if the provided data is not a valid hash value or a Hashids struct with incompatible alphabet.

Source
encode(s, number)

Specs:

  • encode(t, [non_neg_integer]) :: iodata
  • encode(t, non_neg_integer) :: iodata

Encode the given number or a list of numbers.

Only non-negative integers are supported.

Source
new(options \\ [])

Specs:

  • new(alphabet: binary, salt: binary, min_len: non_neg_integer) :: t

Create a struct containing the configuration options for Hashids. It should be passed to encode/2 and decode/2.

Raises Hashids.Error if it encounters an invalid option.

Options

  • :alphabet – a string of characters to be used in the resulting hash value. By default, characters from the Latin alphabet and digits are used.
  • :salt – a string that will be used to permute the hash value and make it decodable only by using the same salt that was provided during encoding. Default: empty string.
  • :min_len – the minimum length of the resulting hash. Default: 0.
Source