pgcrypto : how to get SHA1(string) as a 40-char string, NOT binary string?

Started by Miles Keatonover 20 years ago2 messagesgeneral
Jump to latest
#1Miles Keaton
mileskeaton@gmail.com

I have the contrib/pgcrypto installed.
I want to get the 40-character hash from SHA1

Example: SELECT digest('blue', 'sha1') would be:
4c9a82ce72ca2519f38d0af0abbb4cecb9fceca9

I was surprised and disappointed to get a binary-hash back.

Does anyone know how to get the regular 40-character string back from
SHA1 instead of the binary-hash? (Or how to convert a binary-hash
into a-z0-9 chars?)

#2Michael Fuhr
mike@fuhr.org
In reply to: Miles Keaton (#1)
Re: pgcrypto : how to get SHA1(string) as a 40-char string, NOT binary string?

On Wed, Jul 13, 2005 at 12:45:19AM -0700, Miles Keaton wrote:

I have the contrib/pgcrypto installed.
I want to get the 40-character hash from SHA1

Example: SELECT digest('blue', 'sha1') would be:
4c9a82ce72ca2519f38d0af0abbb4cecb9fceca9

I was surprised and disappointed to get a binary-hash back.

The pgcrypto documentation does show that the return type is bytea,
and it says that the function "Returns binary hash."

Does anyone know how to get the regular 40-character string back from
SHA1 instead of the binary-hash? (Or how to convert a binary-hash
into a-z0-9 chars?)

Use encode().

http://www.postgresql.org/docs/8.0/static/functions-binarystring.html

SELECT encode(digest('blue', 'sha1'), 'hex');
encode
------------------------------------------
4c9a82ce72ca2519f38d0af0abbb4cecb9fceca9
(1 row)

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/