aes_ctr v0.2.0 AesCtr

Summary

Functions

Returns a clear-text string decrypted with AES in CTR mode.

iex> clear_text = "my-clear-text"
  iex> {:ok, aes_128_key} = AesCtr.generate_aes_key(:bytes)
  iex> {:ok, cipher} = AesCtr.encrypt(clear_text, aes_128_key)
  iex> {:ok, val} = AesCtr.decrypt(cipher, aes_128_key)
  iex> assert(val == clear_text)
  true

Encrypt a binary with AES in CTR mode.

iex> clear_text = "my-clear-text"
iex> {:ok, aes_128_key} = AesCtr.generate_aes_key(:bytes)
iex> {:ok, cipher} = AesCtr.encrypt(clear_text, aes_128_key)
iex> assert(is_bitstring(cipher_text))
true

Returns an AES key. Accepts a key_format (:base64|:bytes) to determine type of key to produce and key_length (128|192|256).

iex> {:ok, key} = AesCtr.generate_aes_key(:bytes)
 iex> assert bit_size(key) == 128
 true
 iex> {:ok, key} = AesCtr.generate_aes_key(:bytes, 256)
 iex> assert bit_size(key) == 256
 true
 iex> {:ok, key} = AesCtr.generate_aes_key(:base64)
 iex> assert String.length(key) == 24
 true

Returns a string of random where the length is equal to integer.

iex> {:ok, rand_bytes} = AesCtr.rand_bytes(16)
 iex> assert(byte_size(rand_bytes) == 16)
 true
 iex> assert(bit_size(rand_bytes) == 128)
 true

Functions

decrypt(cipher, key)

Specs

decrypt(binary, String.t) :: {atom, String.t}

Returns a clear-text string decrypted with AES in CTR mode.

iex> clear_text = "my-clear-text"
  iex> {:ok, aes_128_key} = AesCtr.generate_aes_key(:bytes)
  iex> {:ok, cipher} = AesCtr.encrypt(clear_text, aes_128_key)
  iex> {:ok, val} = AesCtr.decrypt(cipher, aes_128_key)
  iex> assert(val == clear_text)
  true
encrypt(text, key)

Specs

encrypt(String.t, String.t) :: {atom, binary}

Encrypt a binary with AES in CTR mode.

iex> clear_text = "my-clear-text"
iex> {:ok, aes_128_key} = AesCtr.generate_aes_key(:bytes)
iex> {:ok, cipher} = AesCtr.encrypt(clear_text, aes_128_key)
iex> assert(is_bitstring(cipher_text))
true
generate_aes_key(format, length \\ 128)

Specs

generate_aes_key(atom, non_neg_integer) ::
  {:ok, binary} |
  {:error, binary}

Returns an AES key. Accepts a key_format (:base64|:bytes) to determine type of key to produce and key_length (128|192|256).

iex> {:ok, key} = AesCtr.generate_aes_key(:bytes)
 iex> assert bit_size(key) == 128
 true
 iex> {:ok, key} = AesCtr.generate_aes_key(:bytes, 256)
 iex> assert bit_size(key) == 256
 true
 iex> {:ok, key} = AesCtr.generate_aes_key(:base64)
 iex> assert String.length(key) == 24
 true
rand_bytes(length)

Specs

rand_bytes(integer) :: {:ok, binary}

Returns a string of random where the length is equal to integer.

iex> {:ok, rand_bytes} = AesCtr.rand_bytes(16)
 iex> assert(byte_size(rand_bytes) == 16)
 true
 iex> assert(bit_size(rand_bytes) == 128)
 true

 iex> {:ok, rand_bytes} = AesCtr.rand_bytes(24)
 iex> assert(byte_size(rand_bytes) == 24)
 true
 iex> assert(bit_size(rand_bytes) == 192)
 true
 iex> {:ok, rand_bytes} = AesCtr.rand_bytes(32)
 iex> assert(byte_size(rand_bytes) == 32)
 true
 iex> assert(bit_size(rand_bytes) == 256)
 true
url_encode64(bytes_to_encode)