hashids alternatives and similar packages
Based on the "Text and Numbers" category.
Alternatively, view hashids alternatives based on common mentions on social networks and blogs.
-
money
Elixir library for working with Money safer, easier, and fun... Is an interpretation of the Fowler's Money pattern in fun.prog. -
nanoid
Elixir port of NanoID, a secure and URL-friendly unique ID generator. https://hex.pm/packages/nanoid -
secure_random
Convenience library for random base64 strings modeled after my love for Ruby's SecureRandom -
chinese_translation
An elixir module to translate simplified Chinese to traditional Chinese, and vice versa, based on wikipedia data -
abacus
Parses and evaluates mathematical expressions in Elixir. Inspired by math.js -
veritaserum
Sentiment analysis based on afinn-165, emojis and some enhancements. -
inet_cidr
CIDR library for Elixir that is compatible with Erlang's :inet and supports both IPv4 and IPv6 -
haikunator
Generate Heroku-like memorable random names to use in your apps or anywhere else. -
Ex_Cldr_Units
Unit formatting (volume, area, length, ...) functions for the Common Locale Data Repository (CLDR) -
mt940
MT940 (standard structured SWIFT Customer Statement message) parser for Elixir. -
convertat
An Elixir library for converting from and to arbitrary bases.
Clean code begins in your IDE with SonarLint
Do you think we are missing an alternative of hashids or a related project?
Popular Comparisons
README
Hashids
Hashids lets you obfuscate numerical identifiers via reversible mapping.
This is a port of Hashids from JavaScript.
Installation
Add Hashids as a dependency to your Mix project:
defp deps do
[
{:hashids, "~> 2.0"}
]
end
Usage
Hashids encodes a list of integers into a string (technically, iodata). Some of the encoding parameters can be customized.
s = Hashids.new([
salt: "123", # using a custom salt helps producing unique cipher text
min_len: 2, # minimum length of the cipher text (1 by default)
])
cipher1 = Hashids.encode(s, 129)
#=> "pE6"
cipher2 = Hashids.encode(s, [1,2,3,4])
#=> "4bSwImsd"
# decode() always returns a list of numbers
Hashids.decode(s, cipher1)
#=> {:ok, [129]}
Hashids.decode!(s, cipher2)
#=> [1, 2, 3, 4]
It is also possible to customize the character set used for the cipher text by providing a custom alphabet. It has to be at least 16 characters long.
defmodule MyAccessToken do
@cyrillic_alphabet "123456789абвгґдеєжзиіїйклмнопрстуфцчшщьюяАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФЦЧШЩЬЮЯ"
@coder Hashids.new(alphabet: @cyrillic_alphabet)
def encode(token_ids) do
Hashids.encode(@coder, token_ids)
end
def decode(data) do
Hashids.decode(@coder, data)
end
end
data = MyAccessToken.encode([1234, 786, 21, 0])
#=> "ЦфюєИНаЛ1И"
MyAccessToken.decode(data)
#=> {:ok, [1234, 786, 21, 0]}
Migrating from 1.0
See the [changelog](./CHANGELOG.md).
Copyright and License
Copyright (c) 2014 Alexei Sholik
This software is licensed under [the MIT license](./LICENSE.md).
*Note that all licence references and agreements mentioned in the hashids README section above
are relevant to that project's source code only.