Need help with hashids-elixir?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

alco
237 Stars 13 Forks MIT License 80 Commits 2 Opened issues

Description

Stringify your ids

Services available

!
?

Need anything else?

Contributors list

# 36,353
Elixir
Erlang
Nim
product...
73 commits
# 190,376
XML
Elixir
Erlang
React
2 commits
# 133,682
Elixir
sqlite3
elixir-...
dalvik
1 commit
# 239,464
Rust
Django
Elixir
absinth...
1 commit
# 84,271
Elixir
Erlang
phoenix...
ecto
1 commit

Hashids

Build status Module Version Hex Docs Total Download License Last Updated

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.

Copyright and License

Copyright (c) 2014 Alexei Sholik

This software is licensed under the MIT license.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.