MySQL SHA2 function does not appear to work

bpeikes picture bpeikes · Feb 28, 2014 · Viewed 9.8k times · Source

I'm using MySql 5.5.32 and trying to reproduce some code in a stored procedure that we have in the business layer so I can set passwords for people using sql. It appears that there is something wrong with the SHA2 function though, but maybe I'm missing something:

SELECT length(SHA2("bob", 512))

Returns 128. Shouldn't it be 64?

SELECT length(SHA2("bob", 256))

Which returns 64, so it appears that either I missing something, or there is a bug in SHA2. Any ideas?

Answer

bpeikes picture bpeikes · Mar 1, 2014

Comment was correct, even though the docs say that it returns binary string, it returns hex encoded string. To get the correct length use:

SELECT length(unhex(SHA2("bob", 512)));