DBMS_OBFUSCATION_TOOLKITパッケージを使用してOracleのデータを暗号化および復号化するためのシンプルで安全な方法。 DBMS_OBFUSCATION_TOOLKITを使用すると、アプリケーションは、データ暗号化標準(DES)またはトリプルDESアルゴリズムのいずれかを使用してデータを暗号化できます。以下は、PLSQLを使用してOracleでデータを暗号化するためのデータベースパッケージ関数の例です。
次のToolkitパッケージは、DBMS_OBFUSCATION_TOOLKITパッケージを使用してデータを暗号化および復号化します。
注:カスタムシークレット暗号化方式を使用するには、このパッケージで定義されているキーを変更する必要があります。データはキーによって暗号化され、そのキーでのみ復号化できます。詳細...
Oracleでデータを暗号化するための使用法:
Select toolkit.encrypt('The test data 123.') From Dual;
Shows: ----------- 5C8ADD7B98919FC937A53AB986782EA9EE63D4ADDF7CA322
データを復号化するには:
select Toolkit.decrypt('5C8ADD7B98919FC937A53AB986782EA9EE63D4ADDF7CA322') from dual;
Shows: ----------- The test data 123.
Create Or Replace PACKAGE Toolkit As FUNCTION encrypt (p_text In VARCHAR2) RETURN RAW; FUNCTION decrypt (p_raw In RAW) RETURN VARCHAR2; END Toolkit; /
Create Or Replace PACKAGE BODY Toolkit As ---- the custom key for g_key RAW(32767) := UTL_RAW.cast_to_raw('20130417'); ---- the custom padding character g_pad_chr VARCHAR2(1) := '_'; PROCEDURE padstring (p_text In OUT VARCHAR2); FUNCTION encrypt (p_text In VARCHAR2) RETURN RAW Is l_text VARCHAR2(32767) := p_text; l_encrypted RAW(32767); BEGIN padstring(l_text); DBMS_OBFUSCATION_TOOLKIT.desencrypt(input => UTL_RAW.cast_to_raw(l_text), Key => g_key, encrypted_data => l_encrypted); RETURN l_encrypted; END; FUNCTION decrypt (p_raw In RAW) RETURN VARCHAR2 Is l_decrypted VARCHAR2(32767); BEGIN DBMS_OBFUSCATION_TOOLKIT.desdecrypt(input => p_raw, Key => g_key, decrypted_data => l_decrypted); RETURN Rtrim(UTL_RAW.cast_to_varchar2(l_decrypted), g_pad_chr); END; PROCEDURE padstring (p_text In OUT VARCHAR2) Is l_units NUMBER; BEGIN IF Length(p_text) Mod 8 > 0 Then l_units := Trunc(Length(p_text)/8) + 1; p_text := Rpad(p_text, l_units * 8, g_pad_chr); END IF; END; END Toolkit; /