PostgreSQL

PostgreSQL pgcryptoを使って暗号復号

エクステンションモジュールのインストール

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=>
スポンサーリンク
タイトルとURLをコピーしました