sql - PostgreSQL 可以对加密记录进行查询吗?

标签 sql postgresql encryption

假设我在一个表中有一整列是加密的,该表也有未加密的列,如 ID,我有整列的加密 key ,我使用 DBMS 的 encrypt() 函数和 AES 来存储

我想知道是否有执行类似的东西

SELECT * FROM table1 WHERE decrypt(col1, 'fooz', 'aes') = 'aValue'

我已经在 PostgreSQL 中尝试过,但不支持上述语法。如果没有办法做到这一点,解决方法是什么?

我研究过解密到一个临时表,然后执行查询并删除它,但这看起来效率极低而且也不安全,因为解密的表有可能保留在磁盘上

最佳答案

伪代码

SELECT * FROM table1 WHERE col1 = encrypt('avalue','fooz','aes');

或者更具体地说:

真实代码

SELECT * FROM table1
WHERE col1 = pgp_sym_encrypt('avalue', 'apasswordwithsomeentropy'
                            ,'compress-algo=1, cipher-algo=aes256');

http://www.postgresql.org/docs/8.3/static/pgcrypto.html

关于sql - PostgreSQL 可以对加密记录进行查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7753375/

相关文章:

mysql - 选择上一行数据作为当前行数据

sql - 用外键将列中的数据替换为其他表中的相同数据

encryption - 用于加密的公钥;用于解密的私钥?

java - 有什么方法可以在 HQL 中执行此查询吗?

sql - 在 SQL 中为 Postgres 9 数据库创建函数时出现语法错误

postgresql - Ansible 创建可以访问所有表的 postgresql 用户?

mysql - 如何获取其他表上的元素计数并按其排序

oracle - 如何将 Oracle 特定函数 TO_NUMBER 重写为 ANSI SQL

security - 同态加密算法的实际应用?

java - java与go之间的RSA加解密