Instantly share code, notes, and snippets.

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

This comment has been minimized.

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.

@ariasuni

This comment has been minimized.

ariasuni commented Oct 11, 2016

You should use #!/usr/bin/python2

@osiloke

This comment has been minimized.

osiloke commented Sep 4, 2017

I made a golang equivalent (without the readline) at https://gist.github.com/osiloke/186a0feb6e203afa01c11d43439a383f

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