エクステンションモジュールのインストール
PostgreSQLで暗号化/復号を行うには追加でモジュール(pgcrypto)をインストールする必要があります。
udondb=> create extension pgcrypto;
CREATE EXTENSION
udondb=> select * from pg_extension order by extname;
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+----------+----------+--------------+----------------+------------+-----------+--------------
16429 | pgcrypto | 16390 | 16421 | t | 1.3 | |
13561 | plpgsql | 10 | 11 | f | 1.0 | |
(2 行)
udondb=> \dx
インストール済みの拡張一覧
名前 | バージョン | スキーマ | 説明
----------+------------+------------+------------------------------
pgcrypto | 1.3 | sooni | cryptographic functions
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 行)
udondb=>
pgp_sym_encrypt()を使って暗号化
select encode(pgp_sym_encrypt('暗号化対象文字列', 'パスワード', 'cipher-algo=aes256'),'hex');
pgp_sym_decrypt()を使って復号
select encode(pgp_sym_encrypt('暗号化対象文字列', 'パスワード', 'cipher-algo=aes256'),'hex');
cipher-algo 暗号アルゴリズム(デフォルト: aes128)
暗号化例
-- 暗号化
--
myposdb=> select encode(pgp_sym_encrypt('暗号化対象文字列', 'パスワード', 'cipher-algo=aes256'),'hex');
encode
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
c30d04090302b44797e861199b3465d24901c19f83f061d1671e8c99c76763ba5952bf9cbb537c6b1a1c7cb69eca08aaa03536dd417db433c07c036ff3032cd22d8fd9cbf102f23a510926f8df29c2f1f63fd0821adb32711fdd
(1 行)
--
-- 復号
--
myposdb=> select pgp_sym_decrypt(decode('c30d04090302b44797e861199b3465d24901c19f83f061d1671e8c99c76763ba5952bf9cbb537c6b1a1c7cb69eca08aaa03536dd417db433c07c036ff3032cd22d8fd9cbf102f23a510926f8df29c2f1f63fd0821adb32711fdd','hex'),'パスワード');
pgp_sym_decrypt
------------------
暗号化対象文字列
(1 行)
myposdb=>