SAK 図書館
Oracle PL/SQL 編10 - 暗号化、dbms_obfuscation_toolkit、desencrypt
■DBMS_OBFUSCATION_TOOLKIT (Oracle8i 以降) ・DBMS_OBFUSCATION_TOOLKIT では、文字列や raw データの暗号化、復号化を 行うことができる。うまく使用すれば、情報をより安全に管理できるだろう。 暗号化キーは、64 ビット、128 ビット、192 ビットのいずれかである。 (Oracle8i - 8.1.6 以降) ■desencrypt ・文字列を 64 ビットキー(8 文字) で暗号化する。 varchar2 文字列のとき、パラメタは、 input_string => key_string => encrypted_string => となる。 raw 文字列の場合のとき、パラメタは、 input => key => encrypted_data => となる。 dbms_obfuscation_toolkit.desencrypt(str, key, cry); | | |_ 暗号化文字列 | | (encrypted_string => out varchar2) | | (encrypted_data => out raw) | |_ 暗号化キー文字列 | (key_string => in varchar2) | (key => in raw) |_ オリジナル文字列 (input_string => in varchar2) (input => in raw) ■desdecrypt ・文字列を 64 ビットキー(8 文字) で復号化する。 varchar2 文字列のとき、パラメタは、 input_string => key_string => decrypted_string => となる。 raw 文字列の場合のとき、パラメタは、 input => key => decrypted_data => となる。 dbms_obfuscation_toolkit.desdecrypt(cry, key, str); | | |_ 復号化文字列 | | (encrypted_string => out varchar2) | | (encrypted_data => out raw) | |_ 暗号化キー文字列 | (key_string => in varchar2) | (key => in raw) |_ 暗号化文字列 (input_string => in varchar2) (input => in raw) ■des3encrypt ・三重 DES(3DES) 暗号化アルゴリズムで文字列を暗号化する。 varchar2 文字列のとき、パラメタは、 input_string => key_string => encrypted_string => which => 0 は 128 ビット暗号化キー(16 文字)、1 は 192 ビット(24 文字) となる。 raw 文字列の場合のとき、パラメタは、 input => key => encrypted_data => which => 0 は 128 ビット暗号化キー(16 文字)、1 は 192 ビット(24 文字) となる。 dbms_obfuscation_toolkit.des3encrypt(str, key, cry, which); | | | |_ 0 128 ビット TwoKeyMode | | | 1 192 ビット ThreeKeyMode | | | (in pls_integer) | | |_ 暗号化文字列 | | (encrypted_string => out varchar2) | | (encrypted_data => out raw) | |_ 暗号化キー文字列 | (key_string => in varchar2) | (key => in raw) |_ オリジナル文字列 (input_string => in varchar2) (input => in raw) ■des3decrypt ・三重 DES(3DES) 暗号化アルゴリズムで文字列を復号化する。 varchar2 文字列のとき、パラメタは、 input_string => key_string => decrypted_string => which => 0 は 128 ビット暗号化キー(16 文字)、1 は 192 ビット(24 文字) となる。 raw 文字列の場合のとき、パラメタは、 input => key => decrypted_data => which => 0 は 128 ビット暗号化キー(16 文字)、1 は 192 ビット(24 文字) となる。 dbms_obfuscation_toolkit.des3decrypt(cry, key, str, which); | | | |_ 0 128 ビット TwoKeyMode | | | 1 192 ビット ThreeKeyMode | | | (in pls_integer) | | |_ 復号化文字列 | | (encrypted_string => out varchar2) | | (encrypted_data => out raw) | |_ 暗号化キー文字列 | (key_string => in varchar2) | (key => in raw) |_ 暗号化文字列 (input_string => in varchar2) (input => in raw) ・通常の暗号化アルゴリズムを使用する場合は、desencrypt、desdecrypt プロシジャを使用する。 set serveroutput on; declare keystr varchar2(8) := 'angoukey'; orgstr varchar2(40) := 'オリジナル文字列'; encstr varchar2(40); decstr varchar2(40); begin -- 暗号化 dbms_obfuscation_toolkit.desencrypt( input_string => orgstr, key_string => keystr, encrypted_string => encstr ); -- 復号化 dbms_obfuscation_toolkit.desdecrypt( input_string => encstr, key_string => keystr, decrypted_string => decstr ); dbms_output.put_line ('-- 処理結果 --'); dbms_output.put_line ('オリジナル文字列 = ' || orgstr); dbms_output.put_line ('暗号化文字列 = ' || encstr); dbms_output.put_line ('復号化文字列 = ' || decstr); end; / -- 処理結果 -- オリジナル文字列 = オリジナル文字列 暗号化文字列 = 6ユ*ニシ。゚滞イy+>・ォ 復号化文字列 = オリジナル文字列 ・三重 DES(3DES) 暗号化アルゴリズムを使用する場合は、 des3encrypt、des3decrypt プロシジャを使用する。 set serveroutput on; declare keystr varchar2(24) := 'angoukey12345678abcdefgh'; orgstr varchar2(40) := 'オリジナル文字列'; encstr varchar2(40); decstr varchar2(40); begin -- 暗号化 dbms_obfuscation_toolkit.des3encrypt( input_string => orgstr, key_string => keystr, encrypted_string => encstr, which => 1 ); -- 復号化 dbms_obfuscation_toolkit.des3decrypt( input_string => encstr, key_string => keystr, decrypted_string => decstr, which => 1 ); dbms_output.put_line ('-- 処理結果 --'); dbms_output.put_line ('オリジナル文字列 = ' || orgstr); dbms_output.put_line ('暗号化文字列 = ' || encstr); dbms_output.put_line ('復号化文字列 = ' || decstr); end; / -- 処理結果 -- オリジナル文字列 = オリジナル文字列 暗号化文字列 = 臾H???・^殪秕?A (←実際には表示不能な文字が含まれる) 復号化文字列 = オリジナル文字列 ■Oracle PL/SQL 編資料
■SQL 基礎実地編資料
■SQL 基礎編資料
■SQL チューニング編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料