Skip to content

Releases: agentine/hashward

Release list

hashward v0.1.0

Choose a tag to compare

@mtingers mtingers released this 12 Mar 09:51

hashward v0.1.0 — Initial Release

Modern password hashing for Python — a drop-in replacement for the unmaintained passlib library (27M monthly downloads, abandoned since 2020).

Highlights

  • Python 3.9–3.13+ — no crypt stdlib dependency, works on all current Python versions
  • Zero required dependencies — pure Python implementations for PBKDF2, scrypt, SHA-crypt, MD5-crypt, DES-crypt
  • argon2 as the secure default (via optional argon2-cffi)
  • CryptContext — multi-scheme policy manager with automatic hash migration
  • passlib-compatible APIhashward.compat.passlib for drop-in migration
  • 296 tests passing across all schemes and edge cases
  • Full type hints with py.typed marker

Installation

pip install hashward           # core (PBKDF2, scrypt, SHA-crypt, MD5-crypt)
pip install hashward[argon2]   # + argon2 support
pip install hashward[bcrypt]   # + bcrypt support
pip install hashward[all]      # all optional backends

Quick Start

import hashward

hash = hashward.hash("mypassword")
hashward.verify("mypassword", hash)   # True

# CryptContext — policy-based hashing with automatic migration
from hashward import CryptContext
ctx = CryptContext(schemes=["argon2", "bcrypt"], default="argon2", deprecated=["bcrypt"])
hash = ctx.hash("mypassword")
verified, new_hash = ctx.verify_and_update("mypassword", hash)

See the README and CHANGELOG for full details.