如何使用pgcrypto在PostgreSQL中加密整数和日期时间数据类型

时间:2019-01-01 06:20:28

标签: sql postgresql

这是我的加密列的代码:

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”列为整数类型,但表达式为字节类型

2 个答案:

答案 0 :(得分:1)

您的表列users.useridusers.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');