ショコラ
ポストグレスで暗号化するには?
これはPostgreSQL8の話です。
①pgcrypto拡張モジュールを有効する。
②暗号化データをインサートしてセレクトしてキメマス。
もっさん先輩
手順
- postgresql-contrib をインストールします。
yum install postgresql-contrib
/usr/lib64/pgsql のディレクトリにライブラリがインストールされます。
- ポストグレスのライブラリディレクトリを確認します。
pg_config --libdir
/usr/local/pgsql/lib
postgresql-contrib がインストールされたディレクトリと libdir のディレクトリが違いますので、次にリンクを張ります。リンクを張らないと pgcrypto のインストールでエラーになります。
- リンクを張ります。
ln -s /usr/lib64/pgsql/pgcrypto.so /usr/local/pgsql/lib/pgcrypto.so
- pgcrypto をインストールします。
psql -U postgres -f /usr/share/pgsql/contrib/pgcrypto.sql {データベース}
- 設定ファイルにパスワードを設定します。
cat <<EOF >> /usr/local/pgsql/data/postgresql.conf
custom_variable_classes = 'encrypt'
encrypt.password='123456'
EOF
- 設定ファイルに読み込みます。
su - postgres -c 'pg_ctl reload'
- 準備ができました。ポストグレスに接続して確認してみましょう。
psql -U postgres
- テーブルを作成します。
CREATE TABLE privacy(mail bytea);
- 暗号化してインサートします。
INSERT INTO privacy values(pgp_sym_encrypt('mos@answorz.com',current_setting('encrypt.password')));
- 複合化してセレクトします。
SELECT pgp_sym_decrypt(mail,current_setting('encrypt.password')) FROM privacy;
因みにアンインストールはこちらです。
psql -U postgres -f /usr/share/pgsql/contrib/uninstall_pgcrypto.sql {データベース}