postgres服務之加密

數據中每每會出現一些敏感字段,例如電話,郵箱等,這時候有需求進行加密保存算法

目前能夠實現的方式有兩種數據庫

方式一:這種方法,aes的加密方法不支持aes-192,不支持aes-256post

#使用encrypt加解密
#加密保存
insert into test2(username,email) values('liulm7',encrypt('liulm7@xxxxx.com','aa','aes-128'));

postgres=# select * from test2 where username='liulm7';
 username |                               email                                | phone | address 
----------+--------------------------------------------------------------------+-------+---------
 liulm7   | \x39162fadc179498413b75b69bc65c98d19e454a0c67bd644118ab9df3c7b49ef |       | 
(1 row)

#解密查看
postgres=# select username,convert_from(decrypt(email::bytea,'aa'::bytea,'aes-128'),'utf8') as email from test2 where username='liulm7';
 username |       email       
----------+-------------------
 liulm7   | liulm7@xxxxx.com
(1 row)

方式二:編碼

#使用pgp_sym_encrypt加密
insert into test2(username,email) values('pgp_sym',pgp_sym_encrypt('pgp@lenovo.com','abc','cipher-algo=aes256, compress-algo=2, compress-level=9'));
insert into test2(username,email) values('pgp_sym',pgp_sym_encrypt('pgppp@lenovo.com','abc','cipher-algo=aes256, compress-algo=2, compress-level=9'));
#解密查看
postgres=# select username,pgp_sym_decrypt(email::bytea,'abc') from test2 where username='pgp_sym';
 username | pgp_sym_decrypt  
----------+------------------
 pgp_sym  | pgp@lenovo.com
 pgp_sym  | pgppp@lenovo.com
(2 rows)

參數說明:加密

cipher-algo  加密算法
compress-algo 壓縮類型,使用的壓縮算法,取值 0,1(zip),2(zlib)
compress-level 壓縮比,級別越高壓縮比越大,速度也會更慢,壓縮級別(0~9)
convert-crlf 是否在加密的時候將\n裝換爲\r\n,在解密的時候將\r\n轉換爲\n
disable-mdc 是否使用SHA1保護數據
sess-key 是否使用單獨的會話密鑰
s2k-mode 使用哪種S2K算法
s2k-count 使用S2K的迭代次數
s2k-digest-algo 在s2k中使用哪一種摘要算法
s2k-cipher-algo 要用哪一種密碼來加密獨立的會話密鑰
unicode-mode 是否將文本數據從數據庫內部編碼轉爲UTF-8並返回
相關文章
相關標籤/搜索