作者
digoal
日期
2020-06-03
标签
PostgreSQL , 安全 , 加解密
背景
非对称加密请参考: 《PostgreSQL 对称加密、非对称加密用法介绍》
PG对称加密功能:
加密:
```
select pgp_sym_encrypt($$
我的秘密
$$,
'密码',
'compress-algo=1, compress-level=9, cipher-algo=aes256, s2k-mode=3, s2k-count=65011712');
pgp_sym_encrypt
\xc30d04090302790472d7f9aff1e7ffd2450176825b1ff8e1d7049125e9d25ba0854efc97759c95fa067d928707b7395cd8c65de7de27a0f8f2a4912a2f8aa63de40ec9bd1892a606019579fdd00067f02b4be19dc67a
(1 row)
```
解密:
```
select pgp_sym_decrypt(
'\xc30d04090302790472d7f9aff1e7ffd2450176825b1ff8e1d7049125e9d25ba0854efc97759c95fa067d928707b7395cd8c65de7de27a0f8f2a4912a2f8aa63de40ec9bd1892a606019579fdd00067f02b4be19dc67a'::bytea
,'密码');
pgp_sym_decrypt
+
我的秘密 +
(1 row)
```
密码错误无法解读
```
select pgp_sym_decrypt(
'\xc30d04090302790472d7f9aff1e7ffd2450176825b1ff8e1d7049125e9d25ba0854efc97759c95fa067d928707b7395cd8c65de7de27a0f8f2a4912a2f8aa63de40ec9bd1892a606019579fdd00067f02b4be19dc67a'::bytea
,'密码错误');
ERROR: 39000: Wrong key or corrupt data
LOCATION: px_THROW_ERROR, px.c:109
```
接下来你可以把秘密都放进去, 保留这段bytea, 例如我的银行卡账号密码:
\xc30d04090302ed282fcf8ac28556ffd24801184860a4fd901bd2999ab3aabcadef7e6e506e310557e659405af56c9c745cd18c4848c553cc0e5c29213e48848f37247ebba2694a94e7e2630790ae7f17971460ed4cd5285b06
参考
https://www.postgresql.org/docs/13/pgcrypto.html#id-1.11.7.34.9
PostgreSQL 许愿链接
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.
9.9元购买3个月阿里云RDS PostgreSQL实例
PostgreSQL 解决方案集合
德哥 / digoal's github - 公益是一辈子的事.





