Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Create a salted SHA512 password hash for use with Dovecot
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()
ssha512 = base64.b64encode('{}{}'.format(sha.digest(), salt))
# Print it out with a prefix for Dovecot
print "\n{{SSHA512}}{}".format(ssha512)
Copy link

lukasmartinelli commented Oct 5, 2014

Thanks alot for this snippet 👍

Tested it with doveadm pw -t $YOUR_GENERATED_HASH -p $PASSWORD and it worked perfectly.

Copy link

ariasuni commented Oct 11, 2016

You should use #!/usr/bin/python2

Copy link

osiloke commented Sep 4, 2017

I made a golang equivalent (without the readline) at

Copy link

JayBeavers commented Apr 26, 2020

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment