Skip to main content
Host UK

LTHN Quasi-Salted Hash (RFC-0010)

Lethean R&D Labs
RFC Cryptography Hashing Go

The LTHN hash algorithm derives its salt deterministically from the input using leet-speak substitution and reversal. Rainbow tables become impractical without needing to store salts. The salt IS the input, transformed.

Features

Rainbow-Table Resistant

Each unique input generates a unique salt, making precomputed tables useless

No Salt Storage

Salt is derived from input - nothing extra to store or lose

Deterministic

Same input always produces same hash - essential for verification

Leet-Speak Transform

a→4, e→3, i→1, o→0, s→5, t→7 then reverse for salt derivation

Installation

import "github.com/Snider/Enchantrix/pkg/crypt"

cryptService := crypt.NewService()
lthnHash := cryptService.Hash(crypt.LTHN, input)

Usage

Algorithm

Input: "password"

Step 1: Leet transform
  p→p, a→4, s→5, s→5, w→w, o→0, r→r, d→d
  = "p455w0rd"

Step 2: Reverse for salt
  = "dr0w554p"

Step 3: Hash(input + salt)
  = SHA256("password" + "dr0w554p")
  = final hash

Security Properties

  • Rainbow tables need separate entry for every possible input
  • Salt is not secret - it's derivable, but that's fine
  • Collision resistance inherited from underlying hash (SHA-256)

More from Lethean R&D Labs

View all projects →

Fancy helping out?

Spotted a bug? Got an idea? We'd love to hear from you.

Read the contributing guide →