一: 查看是pg 版本, 低于13版本的可能会报错
select * from version();
二: 查看是否安装了 加密模块:
如果没有安装则进行安装:
进入postgresql的源安装包文件夹,进入contrib目录,找到pgcrypto文件夹,进入进行编译安装,命令如下:
make USE_PGXS=1 make install
命令执行完毕执行上一步查看是否安装成功;
启用插件:
CREATE EXTENSION pgcrypto;
三: 命令说明
encrypt(data bytea,key bytea,type text) returns bytea
decrypt(data bytea,key bytea,type text) returns bytea
encrypt_iv(data bytea,key bytea,iv bytea,type text) returns bytea
decrypt_iv(data bytea,key bytea,iv bytea,type text) returns bytea
其中,data 是需要加密的数据;type 用于指定加密方法。type 参数的语法如下:
algorithm[- mode][/pad: padding]
其中 algorithm 的可能取值如下:bf,Blowfish 算法,aes,AES 算法(Rijndael-128、-192 或者-256)
mode 的可能取值如下:cbc,下一个块依赖于前一个块(默认值)ecb,每个块独立加密(仅用于测试)
padding 的可能取值如下:pkcs,数据可以是任意长度(默认值);none,数据长度必须是密码块大小的倍数
四: 示例
4.1: 带iv 的 加解密:
加密:
解密:
与之匹配的java代码:
加密:
解密:
参考:
PostgreSQL: Documentation: 15: 19.8. Encryption Options