можно шифровать пароли следующим образом
CREATE OR REPLACE FUNCTION el_encrypt
(
value text
)
RETURNS bytea
AS $BODY$
BEGIN
RETURN pgp_pub_encrypt(value, dearmor(pg_read_file('pgpkeys/pgp-pg-el-public.key')));
END;
$BODY$ LANGUAGE plpgsql
SECURITY DEFINER;
расшифровывать
CREATE OR REPLACE FUNCTION el_decrypt
(
value bytea
) RETURNS text AS
$BODY$
BEGIN
RETURN pgp_pub_decrypt(value, dearmor(pg_read_file('pgpkeys/pgp-pg-el-private.key')));
END;
$BODY$
LANGUAGE plpgsql
SECURITY DEFINER;
при получении дампа базы, данные не возможно прочесть без ключей, ключи хранятся в файловой системе. это достаточно простой и относительно защищенный вариант хранения. как генерить ключи есть в описании postgresql