我使用以下语句尝试了 aes-encryption:
SELECT encrypt('test', 'key', 'aes');
Run Code Online (Sandbox Code Playgroud)
这有效,但我无法解密该值。我将它插入到数据类型bytea的字段中,但我不确定这是否正确。
SELECT decrypt(pw, 'key', 'aes') FROM table WHERE ID = 1;
Run Code Online (Sandbox Code Playgroud)
给我错误
错误:函数解密(bytea,未知,未知)不存在第
1 行:选择解密(密码,'key','aes')FROM tabelle WHERE ID = 7; ^
提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
这是否真的意味着 encrypt() 是一个现有的函数,但不是decrypt()?我还能如何检索 aes 加密的值?
根据这个 答案,不可能使用 pgcrypto 进行完全安全的数据库加密。
现在,两年后(在 postgresql 9.3 中)是否有任何新的扩展或新方法来进行安全的数据库加密,或者在应用程序服务器上执行此操作仍然是确保具有数据库访问权限的人无法解密数据的唯一方法?