как зашифровать данные типа integer и date time в postgresql с помощью pgcrypto - PullRequest
0 голосов
/ 01 января 2019

Вот мой код для шифрования столбца:

UPDATE users 
SET  (userid, modifieddate) = 
(
    PGP_SYM_ENCRYPT('0', 'AES_KEY'),
    PGP_SYM_ENCRYPT('2018-06-19 08:40:23', 'AES_KEY')
) 
WHERE id='3';

, но ошибка его выброса:

столбец "userid" имеет тип integer, но выражение имеет тип byte

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Вы не можете зашифровать только один идентификатор пользователя и оставить его как есть, если вы хотите добиться этого, вам нужно изменить таблицу, как упомянуто @CC Hsu, то есть преобразовать тип данных userid, ModifiedDate в Bytea или текст.который способен хранить как зашифрованные данные, так и ваши обычные данные.

alter table users alter column userid type bytea using PGP_SYM_ENCRYPT(userid::text, 'AES_KEY');
alter table users alter column modifieddate type bytea using PGP_SYM_ENCRYPT(modifieddate::text, 'AES_KEY');
0 голосов
/ 01 января 2019

Столбцы вашей таблицы users.userid и users.modifieddate должны иметь тип BYTEA, поскольку модуль pgcrypto генерирует зашифрованный результат с типом BYTEA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...