暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 数据加解密 - pgcryto

digoal 2020-06-03
633

作者

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 - 公益是一辈子的事.

digoal's wechat

文章转载自digoal,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论