pgp_sym_decrypt_bytea не возвращает ожидаемое значение, что я делаю не так?

Другие сообщения, которые я видел по этой проблеме, говорят, чтобы убедиться, что зашифрованное поле имеет тип bytea, который уже есть у меня. Так что я не совсем уверен, что я делаю здесь не так. Прошу прощения за глупые пароли, это всего лишь тестовое подтверждение концепции. По сути, я шифрую поле "электронная почта", а затем извлекаю и дешифрую его, но значение возвращается как "\x66616b65406578616d706c652e636f6d". Я попытался добавить преобразование::text к возвращенному значению, но это не изменило результат.

PSL (9.6.8)

CREATE EXTENSION IF NOT EXISTS pgcrypto;

create table IF NOT EXISTS test1
(
    username varchar(32) PRIMARY KEY,
    passhash varchar(255),
    email bytea
);

insert into test1 values (
    'amazar', 
    crypt('fakepass1', gen_salt('bf')),
    pgp_sym_encrypt_bytea('fake@example.com', 'cryptopass123')
);

select 
username, 
crypt('fakepass1', passhash)=passhash as match,
pgp_sym_decrypt_bytea(email, 'cryptopass123') as email
from test1 where username='amazar';

- это возвращаемое значение, а не исходное письмо

amazar   | t     | \x66616b65406578616d706c652e636f6d

1 ответ

Неважно, я понял это. Просто нужно было использовать pgp_sym_decrypt в операторе выбора вместо pgp_sym_decrypt_bytea.

Другие вопросы по тегам