how to SHA512-CRYPT for Dovecot in JAVA? -
i have dovecot server mysql database storing usernames , passwords. passwords in database in sha512-crypt scheme.
i inserting hashed passwords in database using script.
doveadm pw -s sha512-crypt -p password -r 500000
i want hash passwords using java application. found this questions , tried create same resulting hash using same password firstpassword
, salt foobarbaz
. reason resulting hash different, although using same hashing algorithm, salt , password.
here java code:
byte[] password = "firstpassword".getbytes(); byte[] salt = "foobarbaz".getbytes(); messagedigest digest = messagedigest.getinstance("sha-512"); digest.reset(); digest.update(salt); byte[] hashed = digest.digest(password); string encodedhash = base64.getencoder().encodetostring(hashed); system.out.printf("{sha512-crypt}$6$%s$%s", "foobarbaz",encodedhash);
this outputs hash:
{sha512-crypt}$6$foobarbaz$5wptonxvi/a6f003wbygkicsfa6x0ansxiye8uefj0te5pi+rv9kcmlgdzbokg7zswqgwfg+piqruvdg6aip/g==
i tried swapping order of salt + password make it:
digest.update(password); byte[] hashed = digest.digest(salt);
this gives me:
{sha512-crypt}$6$foobarbaz$qws8+w5ewhmodf+uo2tcsd55tdxzdzgj5furibegwvcwkft5uqwivbng1oyws8bzefdeggyd0u6zs1karvgf9q==
does have idea how can accomplish same hash results in java if use same password , salt?
the hash looking is:
{sha512-crypt}$6$foobarbaz$.t.g.7frjqz6n2ff7b3bekr5j37cwhwgvpoooccrr0bvkbbnmmlcxzqqqkjbnhnhc.583dtbleuzcduqe7nee.
doveadm
uses unix crypt family of functions generate hash , outputs hash base64 encoded string. alphabet used encoding (by crypt
) [a-za-z0-9./]
(as mentioned on man page functions). however, alphabet used java.util.base64
class [a-za-z0-9+/]
(compliant rfc 4648
, mentioned on javadoc page base64 class). therefore, if hashed values same, encoded differently.
a reliable option use crypt
class apache commons codec crypt.crypt("firstpassword", "$6$foobarbaz")
(the prefix $6$
mandatory instruct crypt
sha512-crypt
algorithm needs used). generate expected hash value.
Comments
Post a Comment