Solución:
digest(data text, type text) returns bytea;
no es una sintaxis válida.
Recomiendo usar bcrypt
en lugar de. No se requieren definiciones de funciones adicionales:
INSERT into "login" (login, password, employee_id)
VALUES ('email',crypt('password', gen_salt('bf'));
Más tarde…
UPDATE table SET password = crypt('password',gen_salt('bf'))
Y comprobando la contraseña:
SELECT ... FROM table
WHERE password is NOT NULL
AND password = crypt('password-to-test',password);
Bcrypt es recomendado por Crafted Software y Jeff Atwood. Los documentos oficiales de pgcrypto también pueden ser de interés.
Sé que esta pregunta es antigua, pero para aquellos que tienen el mismo problema.
Paso 1: primero verifique si prcrypto está instalado o no
select e.extname, n.nspname from pg_catalog.pg_extension e left join pg_catalog.pg_namespace n on n.oid = e.extnamespace;
Paso 2: Si no está instalado, cree una extensión
CREATE EXTENSION IF NOT EXISTS pgcrypto;
Paso 3: Calcula un hash binario de los datos dados.
CREATE OR REPLACE FUNCTION sha1(bytea) returns text AS $$
SELECT encode(digest($1, 'sha1'), 'hex')
$$ LANGUAGE SQL STRICT IMMUTABLE;
Último paso:
También use la función de codificación si desea el resumen como una cadena hexadecimal
SELECT encode(digest('blue', 'sha1'), 'hex');
o
directamente sha('blue')