Как преобразовать выходной формат функции decrypt_iv () в текст в postgres? - PullRequest
0 голосов
/ 13 июля 2020

Я использую следующее определение для функций postgres:

DROP FUNCTION IF EXISTS EncryptStringWithIV(text);
create or replace function EncryptStringWithIV(email text) returns bytea as '
declare
  Key text;
  IV text;
  value bytea;
begin
  select sStringValue into Key from XtkOption where sName=''Key''; 
  select sStringValue into IV from XtkOption where sName=''IV'';
  value = encrypt_iv($1::bytea, Key::bytea, IV::bytea, ''aes'');
  return value;
end;
' language plpgsql
;

DROP FUNCTION IF EXISTS DecryptStringWithIV(bytea);
create or replace function DecryptStringWithIV(email bytea) returns bytea as '
declare
  Key text;
  IV text;
value bytea;
begin
  select sStringValue into Key from XtkOption where sName=''Key''; 
  select sStringValue into IV from XtkOption where sName=''IV'';
  value = $1;
  return decrypt_iv(value, Key::bytea, IV::bytea, ''aes'');
end;
' language plpgsql
;

Это мой результат, когда fn. вызывается:

EncryptStringWithIV('123') - \ x8dd75f487a7b45e73fbe365545f0506a DecryptStringWithIV('\\x8dd75f487a7b45e73fbe365545f0506a') - \ x313233

Должен ли я преобразовывать выходной формат, чтобы вернуть точное текстовое значение (123)? Я не могу понять, в чем именно я ошибаюсь. любая помощь будет принята с благодарностью. Спасибо.

1 Ответ

1 голос
/ 13 июля 2020

Вам нужно кодировать, чтобы получить его от bytea до text.

encode(DecryptStringWithIV('\\x8dd75f487a7b45e73fbe365545f0506a'), 'escape')

Или измените функцию дешифрования:

create or replace function DecryptStringWithIV(email bytea) returns text as '
declare
  Key text;
  IV text;
value bytea;
begin
  select sStringValue into Key from XtkOption where sName=''Key''; 
  select sStringValue into IV from XtkOption where sName=''IV'';
  value = $1;
  return encode(decrypt_iv(value, Key::bytea, IV::bytea, ''aes''), ''escape'');
end;
' language plpgsql
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...