Last active
February 15, 2024 12:35
-
-
Save RichardBronosky/58f1b34d2bcf4c4e5f1cd18a88fdc37d to your computer and use it in GitHub Desktop.
Platform independant what of generating Linux compatible crypt(3) sha512 hashes ($6$ style). For systems (like macOS/OSX) where you can't `mkpasswd -m sha-512`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# Because OSX doesn't have mkpasswd... | |
# Based on https://stackoverflow.com/a/17992126/117471 | |
# python3 -c "from passlib.hash import sha512_crypt; print(sha512_crypt.encrypt(input()))" <<< bruno # NOQA | |
# Usage: | |
# | |
# $ ./mkpasswd.py | |
# Password: | |
# $6$rounds=656000$pfFmQISGcjWHOCxW$rBptiSK.tqSPnUiq6KiSHzz6LvvW/x1SjkkWFwxWB9Dt75NLNBs0N3OyGV4K5ejjBs/u.o3jtigvUKbmmwVQP. | |
# | |
# $ PROCESS_TIME=1 ./mkpasswd.py | |
# Password: | |
# $6$rounds=656000$e0OGrad82DBrUo9T$ldqtOdN54gmXI6nb0D.Y5mm5ih.LIQm/Ep/bkNL76.3hE65FqXA9wyZ.M5YOrv6dSvwhPAktXGJ6LJT0Fgd4x. | |
# 656000 rounds in 1.008705 seconds of cpu time | |
# | |
# $ ROUNDS=1280000 PROCESS_TIME=1 ./mkpasswd.py <<< bruno | |
# $6$rounds=1280000$QO5FSyw5rQpiY6PI$0zRMJ4RzCbH61XxIdpsUm/79.VZ13Mm9TBN9GvJwt1LI1U5FVzakrLya5VJsXlTou3p5ZeWmo29bIUjubRuc31 | |
# 1280000 rounds in 1.9206560000000001 seconds of cpu time | |
import os | |
import sys | |
import time | |
from getpass import getpass | |
from passlib.hash import sha512_crypt | |
rounds = os.environ.get('ROUNDS') | |
if not rounds: | |
rounds = sha512_crypt.default_rounds | |
passwd = input() if not sys.stdin.isatty() else getpass() | |
proc = sha512_crypt.using(rounds=rounds) | |
start = time.process_time() | |
out = proc.encrypt(passwd) | |
end = time.process_time() | |
print(out) | |
if os.environ.get('PROCESS_TIME'): | |
print('{} rounds in {} seconds of cpu time'.format(rounds, end-start)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment