Skip to content

Instantly share code, notes, and snippets.

@JayBeavers
Created April 26, 2020 02:08
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save JayBeavers/7bca0642f591daab0d0916dbcdd4e3b3 to your computer and use it in GitHub Desktop.
Save JayBeavers/7bca0642f591daab0d0916dbcdd4e3b3 to your computer and use it in GitHub Desktop.
Create a salted SHA512 password hash for use with Dovecot, updated for python 3
#!/usr/bin/python
import os
import hashlib
import getpass
import base64
password1 = None
password2 = None
# Read the password
while password1 != password2 or password1 == None:
password1 = getpass.getpass()
password2 = getpass.getpass("Confirm password: ")
if (password1 != password2):
print("\nPassword mismatch, try again.")
# Generate a 5 byte random salt
salt = os.urandom(5)
# Hash our password + salt
sha = hashlib.sha512()
sha.update(password1.encode('utf-8'))
sha.update(salt)
ssha512 = base64.b64encode('{}{}'.format(sha.digest(), salt).encode('utf-8'))
# Print it out with a prefix for Dovecot
print("\n{{SSHA512}}{}".format(ssha512))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment