首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pgcrypto加密

用pgcrypto加密
EN

Database Administration用户
提问于 2017-11-02 20:24:32
回答 2查看 3.2K关注 0票数 4

我正在使用pgcrypto加密postgre表中的列。postgre版本为9.5.1。我已经知道了如何使用pgp_sym_encrypt()加密和使用pgp_sym_decrypt()解密。我的问题是想办法把钥匙藏起来。

我试图避免让应用程序解密返回的数据。只有当某人能够查看整个表(45万行)并将数据放在一起时,该表中的数据才是敏感的,因此数据返回到解密的应用程序是可以的。

在pgAdmin中,我的查询中包含了以下内容

代码语言:javascript
复制
 SELECT pgp_sym_decrypt(column1,'password')

很明显,我不希望我们的应用程序使用的查询模板将密码存储在其中,然后在每次运行查询时传递它。有什么好主意吗?

EN

回答 2

Database Administration用户

发布于 2017-11-02 20:38:04

没有办法避免服务器上对称加密的缺点。

如果您想要“避免应用程序解密”,PostgreSQL必须访问密钥和加密数据才能解密它。只有两个来源可以做到这一点。

  1. 消费者
  2. 数据库(在这种情况下,它还会被写入日志文件)

当然,如果您有一个像webserver之类的数据访问点,您也可以在那里解密,并将密钥保持在服务器上。

票数 3
EN

Database Administration用户

发布于 2017-11-06 22:44:59

所以,我很好奇,你最后做了什么?

将评论转换为回答,以满足上述好奇心. :)

除非第二条被误解:

假设应用程序在该表上具有行级特权,则可以使用

代码语言:javascript
复制
SELECT pgp_sym_decrypt( column1, get_pswd(pkey) ) 

其中,get_pswd(pkey)将为该特定的pkey行选择密码。

并且可以将每一行的pkey和密码存储在应用程序没有选择特权的单独表中。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/189990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档