Шифрование пароля в функции не работает - postgres - PullRequest
0 голосов
/ 03 июля 2018

Я написал базовую функцию вставки в postgres, ее цель - вставить данные с зашифрованным паролем, я использовал встроенную функцию Postgres PGP_SYS_ENCRYPT, но получаю эту ошибку:

ERROR:  function pgp_sym_encrypt(text, unknown) does not exist
LINE 3:            PGP_SYM_ENCRYPT(pass,'AES_KEY'),'0')
                   ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
QUERY:  INSERT INTO users (username,email,password_,isDriver,login_status)  VALUES(usn,
                                                                            em,
                                            PGP_SYM_ENCRYPT(pass,'AES_KEY'),'0')
CONTEXT:  PL/pgSQL function create_users(character varying,character varying,text,character varying) line 5 at SQL statement
SQL state: 42883

Я не знаю, почему это так, ниже моя функция, что мне не хватает? :

CREATE OR REPLACE FUNCTION public.create_users(
    usn character varying,
    em character varying,
    pass text,
    isd character varying)
    RETURNS integer
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
AS $BODY$
declare
    total integer;

BEGIN
   INSERT INTO users (username,email,password_,isDriver,login_status)  VALUES(usn,
                                                                            em,
                                            PGP_SYM_ENCRYPT(pass,'AES_KEY'),'0');
   RETURN 1;
END;

$BODY$;

ALTER FUNCTION public.create_users(character varying, character varying, text, character varying)
    OWNER TO postgres;

1 Ответ

0 голосов
/ 03 июля 2018

дикое предположение здесь будет: может быть, у вас не установлено? ..

db=# \sf pgp_sym_encrypt
ERROR:  function "pgp_sym_encrypt" does not exist

так что вы просто

db=# create extension pgcrypto ;
CREATE EXTENSION

и

db=# \sf pgp_sym_encrypt(text,text)
CREATE OR REPLACE FUNCTION public.pgp_sym_encrypt(text, text)
 RETURNS bytea
 LANGUAGE c
 PARALLEL SAFE STRICT
AS '$libdir/pgcrypto', $function$pgp_sym_encrypt_text$function$
...