数据库列加密postgres

时间:2016-01-07 15:08:58

标签: database postgresql encryption aes pgcrypto

如何使用pgcrypto addon加密postgres数据库中的列?

我正在使用postgres 9.3并且我需要加密我的一个专栏,postgres是否也支持Aes加密或者任何意思我可以实现它?

1 个答案:

答案 0 :(得分:10)

是的,Postgres pgcrypto 模块支持AES。可以在 here 找到包含示例的所有详细信息。至于样本用法:

-- add extension
CREATE EXTENSION pgcrypto;

-- sample DDL
CREATE TABLE test_encrypt(
  value TEXT
);
INSERT INTO test_encrypt VALUES ('testvalue');

-- encrypt value
WITH encrypted_data AS (
  SELECT crypt('PasswordToEncrypt0',gen_salt('md5')) as hashed_value
)
UPDATE test_encrypt SET value = (SELECT hashed_value FROM encrypted_data);

验证密码:

SELECT (value = crypt('PasswordToEncrypt0', value)) AS match FROM test_encrypt;

返回:

 match 
-------
 t
(1 row)