设想:
我创建了一个表:
Create table knights(age integer, nickname varchar(255));
然后我插入了几条记录,并使用 pgcrypto 加密了昵称列数据:
insert into knights values(21, PGP_SYM_ENCRYPT('ShiningArmor','AES_KEY')::varchar);
insert into knights values(32, PGP_SYM_ENCRYPT('Rigid','AES_KEY')::varchar);
问题: 现在我尝试按照此答案中的建议使用加密的昵称列从表中获取记录:
SELECT * FROM knights WHERE nickname = pgp_sym_encrypt('Rigid', 'AES_KEY')::varchar;
我什么也得不到。请注意,我必须将 to 强制nickname
转换为varchar
。即使我将列类型更改为 bytea,我仍然一无所获。请注意,我的对称密钥实际上是相同的:AES_KEY
. 我没有在任何地方生成它。我需要改变长度吗?
我的 PostGreSql 版本是 9.6。