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 編資料