SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK