这是我的加密列的代码:
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”列为整数类型,但表达式为字节类型
答案 0 :(得分:1)
您的表列users.userid
和users.modifieddate
的类型应为BYTEA
,因为pgcrypto
模块将生成BYTEA
类型的加密结果。
答案 1 :(得分:0)
您不能仅加密一个用户的ID并将其原样保留,如果要实现,则需要按@ C.C所述更改表。 Hsu,即将userid,modifieddate的数据类型转换为可以存储加密数据和常规数据的字节或文本。
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');