如何在PostgreSQL中加密数组

如何在PostgreSQL中加密数组,postgresql,encryption,Postgresql,Encryption,所以我看到摘要(数据文本,类型文本)返回bytea,但是有没有办法将其应用于insert上的数组类型(bytea[]) 例如: INSERT INTO table(my_val) VALUES(digest($1, 'type')); 是如何将其用于非数组值,但如何将其应用于数组?您可以将任何内容转换为文本 因此,将数组强制转换为文本,然后对其进行散列 INSERT INTO table(my_val) VALUES(digest(cast(data as text), type)); 将数

所以我看到
摘要(数据文本,类型文本)返回bytea
,但是有没有办法将其应用于insert上的数组类型(
bytea[]

例如:

INSERT INTO table(my_val) VALUES(digest($1, 'type'));

是如何将其用于非数组值,但如何将其应用于数组?

您可以将任何内容转换为文本

因此,将数组强制转换为文本,然后对其进行散列

INSERT INTO table(my_val) VALUES(digest(cast(data as text), type));

将数组强制转换为文本并使用
crypt()
函数加密,因为摘要不加密

INSERT INTO table(my_val) VALUES(crypt(cast(data as text), type), gen_salt('md5'));
您还可以使用
hmac()
函数, 这类似于
digest()
,但哈希值只能在知道密钥的情况下重新计算。 这可以防止出现有人更改数据并更改哈希以进行匹配的情况


这很好地解释了。

摘要不是加密的,而是散列。