DECRYPT

DECRYPT 関数またはプロシージャは、ユーザー指定の暗号アルゴリズム、キー、およびオプションの初期化ベクトルを使用してデータを復号化します。 DECRYPT 関数のシグネチャは次のとおりです。

DECRYPT
  (<src> IN RAW, <typ> IN INTEGER, <key> IN RAW, <iv> IN RAW
   DEFAULT NULL) RETURN RAW

DECRYPT プロシージャのシグネチャは次のとおりです。

DECRYPT
  (<dst> INOUT BLOB, <src> IN BLOB, <typ> IN INTEGER, <key> IN RAW,
   <iv> IN RAW DEFAULT NULL)

または

DECRYPT
  (<dst> INOUT CLOB, <src> IN CLOB, <typ> IN INTEGER, <key> IN RAW,
   <iv> IN RAW DEFAULT NULL)

プロシージャとして呼び出されると、 DECRYPTBLOB または CLOB のデータをユーザー指定の BLOB に返します。

Parameters

dst

dst は、 DECRYPT プロシージャの出力が書き込まれる BLOB の名前を指定します。 DECRYPT 手順は、 dst に現在ある既存のデータを上書きします。

src

src は、復号化されるソースデータを指定します。関数として DECRYPT を呼び出す場合は、 RAW データを指定します。手順として DECRYPT を呼び出す場合は、 BLOB または CLOB のデータを指定します。

typ

typ は、ブロック暗号タイプと修飾子を指定します。これは、 src が暗号化されたときに指定されたタイプと一致する必要があります。AdvancedServerは、次のブロック暗号アルゴリズム、修飾子、および暗号スイートをサポートしています。

Block Cipher Algorithms

ENCRYPT_DES

CONSTANT INTEGER:= 1;

ENCRYPT_3DES

CONSTANT INTEGER:= 3;

ENCRYPT_AES

CONSTANT INTEGER:= 4;

ENCRYPT_AES128

CONSTANT INTEGER:= 6;

ENCRYPT_AES192

CONSTANT INTEGER:= 192;

ENCRYPT_AES256

CONSTANT INTEGER:= 256;

Block Cipher Modifiers

CHAIN_CBC

CONSTANT INTEGER:= 256;

CHAIN_ECB

CONSTANT INTEGER:= 768;

Block Cipher Padding Modifiers

PAD_PKCS5

CONSTANT INTEGER:= 4096;

PAD_NONE

CONSTANT INTEGER:= 8192;

Block Cipher Suites

DES_CBC_PKCS5

CONSTANT INTEGER:= ENCRYPT_DES + CHAIN_CBC + PAD_PKCS5;

DES3_CBC_PKCS5

CONSTANT INTEGER:= ENCRYPT_3DES + CHAIN_CBC + PAD_PKCS5;

AES_CBC_PKCS5

CONSTANT INTEGER:= ENCRYPT_AES + CHAIN_CBC + PAD_PKCS5;

key

key は、ユーザー定義の復号化キーを指定します。これは、 src が暗号化されたときに指定されたキーと一致する必要があります。

iv

iv (オプション)は初期化ベクトルを指定します。 src が暗号化されたときに初期化ベクトルが指定された場合、 src を復号化するときに初期化ベクトルを指定する必要があります。デフォルトは NULL です。

Examples

次の例では、 DBMS_CRYPTO.DECRYPT 関数を使用して、 passwords テーブルから取得した暗号化パスワードを復号化します。

CREATE TABLE passwords
(
  principal VARCHAR2(90) PRIMARY KEY, -- username
  ciphertext RAW(9) -- encrypted password
);

CREATE FUNCTION get_password(username VARCHAR2) RETURN RAW AS
 typ       INTEGER := DBMS_CRYPTO.DES_CBC_PKCS5;
 key       RAW(128) := 'my secret key';
 iv        RAW(100) := 'my initialization vector';
 password  RAW(2048);
BEGIN

  SELECT ciphertext INTO password FROM passwords WHERE principal = username;

  RETURN dbms_crypto.decrypt(password, typ, key, iv);
END;

DECRYPT を呼び出すときは、 ENCRYPTING がターゲットのときに使用されたものと同じ暗号タイプ、キー値、および初期化ベクトルを渡す必要があることに注意してください。