Bcrypt Generate
Hash passwords with bcrypt or verify existing hashes using Python's bcrypt library.
Input
For hashing:
- Password string to hash
- Cost/rounds (default: 10, range: 4–31)
For verification:
- Password string
- Existing bcrypt hash string (starts with
$2b$or$2a$)
Output
- Bcrypt hash string (for hashing mode)
- True/False result (for verification mode)
Instructions
-
Determine mode: hash a new password, or verify against an existing hash.
-
Hashing a password:
python3 -c "import bcrypt; print(bcrypt.hashpw(b'PASSWORD', bcrypt.gensalt(rounds=ROUNDS)).decode())"Replace
PASSWORDwith the actual password andROUNDSwith the cost factor (default 10). -
Verifying a password against a hash:
python3 -c "import bcrypt; print(bcrypt.checkpw(b'PASSWORD', b'HASH'))"Replace
PASSWORDandHASHwith the actual values. -
Check if
bcryptPython package is available before running:python3 -c "import bcrypt" 2>&1If it fails with
ModuleNotFoundError, tell the user:"This skill requires the Python
bcryptpackage. Install with:pip3 install bcrypt." -
If
python3is not found at all, tell the user:"This skill requires
python3. Install with:brew install python3(macOS) orsudo apt install python3(Linux)." -
Present the hash output on its own line. For verification, report clearly: "Password MATCHES the hash" or "Password does NOT match the hash."
Examples
Hash password "mysecret" with cost 10:
Command: python3 -c "import bcrypt; print(bcrypt.hashpw(b'mysecret', bcrypt.gensalt(rounds=10)).decode())"
Output: $2b$10$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW
Hash password "admin" with cost 12:
Command: python3 -c "import bcrypt; print(bcrypt.hashpw(b'admin', bcrypt.gensalt(rounds=12)).decode())"
Output: $2b$12$... (60-char bcrypt hash)
Verify "mysecret" against $2b$10$abc...:
Command: python3 -c "import bcrypt; print(bcrypt.checkpw(b'mysecret', b'\$2b\$10\$abc...'))"
Output: True
Error Handling
python3not found → tell user to install Python 3bcryptmodule not found → tell user to runpip3 install bcrypt- Password contains single quotes → escape them or note that the command must be adjusted; prefer using a temp Python script file for complex passwords
- Hash string malformed (does not start with
$2b$or$2a$) → warn the user the hash appears invalid before running - High cost factor (>= 14) → warn the user this will be slow (intentional for security)