{"id":23150,"library":"pyescrypt","title":"pyescrypt","description":"Python bindings for yescrypt, a memory-hard, NIST-compliant password hashing scheme. Version 0.1.0 is the initial release, supporting all features except shared memory (ROM).","status":"active","version":"0.1.0","language":"python","source_language":"en","source_url":"https://github.com/0xcb/pyescrypt","tags":["password-hashing","yescrypt","cryptography","memory-hard","nist"],"install":[{"cmd":"pip install pyescrypt","lang":"bash","label":"Install from PyPI"},{"cmd":"pip install git+https://github.com/0xcb/pyescrypt.git","lang":"bash","label":"Install from GitHub"}],"dependencies":[{"reason":"C foreign function interface for calling libyescrypt","package":"cffi","optional":false}],"imports":[{"note":"The package is named pyescrypt, not yescrypt.","wrong":"from yescrypt import Yescrypt","symbol":"Yescrypt","correct":"from pyescrypt import Yescrypt"}],"quickstart":{"code":"from pyescrypt import Yescrypt\n\nyescrypt = Yescrypt()\npassword = b\"correct horse battery staple\"\nsalt = b\"unique_salt\"\nhashed = yescrypt.hash(password, salt)\nprint(\"Hashed:\", hashed.hex())\nverified = yescrypt.verify(password, salt, hashed)\nprint(\"Verified:\", verified)","lang":"python","description":"Hash and verify a password using yescrypt with default parameters."},"warnings":[{"fix":"Use .hex() on the hash bytes before storing, and .fromhex() when loading.","message":"The hash output is raw bytes (not a string). You are responsible for encoding (e.g., hex) for storage.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Check return value and handle explicitly; watch for updates.","message":"The verify method currently returns True/False. The signature may change in future versions to raise exceptions for invalid input.","severity":"deprecated","affected_versions":"0.1.0"},{"fix":"Always specify parameters: hash(password, salt, N=2**14, r=8, p=1) for recommended settings.","message":"No default parameters for memory cost, block size, or parallelism. You must pass them or accept library defaults that may be weak.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use 'from pyescrypt import Yescrypt' (package is pyescrypt).","cause":"Importing using the package name instead of the actual module name.","error":"ModuleNotFoundError: No module named 'yescrypt'"},{"fix":"Upgrade to Python 3.5+ or use binascii.hexlify().","cause":"Python 3.4 or earlier (hex method added in 3.5).","error":"AttributeError: 'bytes' object has no attribute 'hex'"},{"fix":"Install libyescrypt from your system package manager (e.g., apt install libyescrypt-dev).","cause":"Missing shared library libyescrypt or incompatible version.","error":"cffi.error.CDefError: cannot parse '...'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}