目录
1.安装pgcrypto
create extension pgcrypto;
2.加/解密字段
加密:encrypt(需加密字段,秘钥,算法)
SELECT encode(encrypt('lyy', 'Secret', 'aes-cbc/pad:pkcs'), 'base64');
--heb4Mr+ygQke7YYASIMiWg==
解密:decrypt(需解密字段的二进制数据,秘钥,算法)
SELECT encode(decrypt(decode('heb4Mr+ygQke7YYASIMiWg==','base64'), 'Secret', 'aes-cbc/pad:pkcs') , 'escape');
decode、encode都是为了解码/编码,不然出来的是二进制数据
3.通过like实现模糊查询
创建test表格
CREATE TABLE public.test
(
decrypt_data character varying,
encrypt_data character varying
);
插入数据
insert into test(decrypt_data,encrypt_data) values
('hello',encode(encrypt('hello', 'testpwd', 'aes-cbc/pad:pkcs'), 'base64')),
('world',encode(encrypt('world', 'testpwd', 'aes-cbc/pad:pkcs'), 'base64')),
('very',encode(encrypt('very', 'testpwd', 'aes-cbc/pad:pkcs'), 'base64')),
('good',encode(encrypt('good', 'testpwd', 'aes-cbc/pad:pkcs'), 'base64')),
('hahaha',encode(encrypt('hahaha', 'testpwd', 'aes-cbc/pad:pkcs'), 'base64'));
like 查询
select * from test
where exists( select 1 where encode(decrypt(decode(encrypt_data,'base64'), 'testpwd', 'aes-cbc/pad:pkcs') , 'escape') like '%o%')