ショコラ
ポストグレスで暗号化するには?
これは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 {データベース}