AuthManager.Tools.CryptoTools (auth_manager_core v0.1.1)

Utilidades para operaciones criptográficas.

Summary

Functions

Decodifica y descifra datos que fueron cifrados y codificados con encrypt_and_encode/3.

Descifra datos cifrados con AES en modo GCM.

Deriva una clave a partir de una contraseña utilizando PBKDF2.

Cifra un string utilizando AES en modo GCM.

Cifra un string y lo codifica en base64 para almacenamiento o transmisión.

Genera un token aleatorio de una longitud específica.

Genera un hash seguro de una contraseña utilizando bcrypt.

Genera un hash HMAC utilizando SHA-256.

Genera un hash MD5 de los datos proporcionados. Nota: MD5 no debe usarse para seguridad, solo para checksums o identificadores no sensibles.

Genera un hash SHA-256 de los datos proporcionados.

Verifica si una contraseña coincide con un hash.

Functions

decode_and_decrypt(encoded_str, key, aad \\ "")

Decodifica y descifra datos que fueron cifrados y codificados con encrypt_and_encode/3.

Ejemplos

iex> CryptoTools.decode_and_decrypt(encrypted, key)
"datos secretos"

decrypt(ciphertext, iv, tag, key, aad \\ "")

Descifra datos cifrados con AES en modo GCM.

Ejemplos

iex> CryptoTools.decrypt(encrypted, iv, tag, key)
"datos secretos"

derive_key(password, salt, iterations \\ 10000, key_length \\ 32)

Deriva una clave a partir de una contraseña utilizando PBKDF2.

Ejemplos

iex> salt = :crypto.strong_rand_bytes(16)
iex> CryptoTools.derive_key("mypassword", salt, 10000, 32)
<<...>>

encrypt(plaintext, key, aad \\ "")

Cifra un string utilizando AES en modo GCM.

Ejemplos

iex> key = :crypto.strong_rand_bytes(32)
iex> {encrypted, iv, tag} = CryptoTools.encrypt("datos secretos", key)

encrypt_and_encode(plaintext, key, aad \\ "")

Cifra un string y lo codifica en base64 para almacenamiento o transmisión.

Ejemplos

iex> key = :crypto.strong_rand_bytes(32)
iex> encrypted = CryptoTools.encrypt_and_encode("datos secretos", key)

generate_token(length \\ 32)

Genera un token aleatorio de una longitud específica.

Ejemplos

iex> CryptoTools.generate_token(16)
"f3d8e1c5a9b7..."

hash_password(password)

Genera un hash seguro de una contraseña utilizando bcrypt.

Ejemplos

iex> CryptoTools.hash_password("secretpassword")
"$2b$12$..."

hmac(data, key)

Genera un hash HMAC utilizando SHA-256.

Ejemplos

iex> CryptoTools.hmac("datos", "secreto")
"..."

md5(data)

Genera un hash MD5 de los datos proporcionados. Nota: MD5 no debe usarse para seguridad, solo para checksums o identificadores no sensibles.

Ejemplos

iex> CryptoTools.md5("hello world")
"5eb63bbbe01eeed093cb22bb8f5acdc3"

sha256(data)

Genera un hash SHA-256 de los datos proporcionados.

Ejemplos

iex> CryptoTools.sha256("hello world")
"b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"

verify_password(password, hash)

Verifica si una contraseña coincide con un hash.

Ejemplos

iex> CryptoTools.verify_password("secretpassword", "$2b$12$...")
true