ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

34 DBMS_CRYPTO

DBMS_CRYPTOは格納されたデータの暗号化と復号化のためのインタフェースを提供するパッケージであり、ネットワーク通信を実行するPL/SQLプログラムとともに使用できます。このパッケージでは、Advanced Encryption Standard(AES)暗号化アルゴリズムなど、業界標準の複数の暗号化/ハッシュ・アルゴリズムがサポートされます。AESはデータ暗号化規格(DES)に代わる暗号化規格として、National Institute of Standards and Technology(NIST)で認定されています。


関連項目:

このパッケージの使用方法および一般的なデータ暗号化の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

この章では、次の項目について説明します。


DBMS_CRYPTOサブプログラムの使用方法


概要

DBMS_CRYPTOパッケージには、暗号化に関する基本的なファンクションとプロシージャが収録されています。このパッケージを正しく安全に使用するためには、セキュリティに関する一般的なレベルの知識と経験が必要です。

DBMS_CRYPTOパッケージでは、イメージやサウンドを含むRAWやラージ・オブジェクト(LOB)などのOracle汎用データ型に対する暗号化および復号化が可能になります。特に、BLOBおよびCLOBをサポートします。また、グローバリゼーション・サポートを通じて、複数の異なるデータベース・キャラクタ・セットにわたるデータの暗号化も可能です。

このパッケージでは、次の暗号化アルゴリズムがサポートされます。

DBMS_CRYPTOでは、ブロック暗号修飾子もサポートされます。 また、PKCS(公開鍵暗号規格)#5などの複数のパディング・オプション、暗号ブロック連鎖(CBC)などの4種類のブロック暗号連鎖モードを選択できます。

表34-1に、DBMS_CRYPTOパッケージの機能と、PL/SQLのもう1つの暗号化パッケージであるDBMS_OBFUSCATION_TOOLKITの機能の比較を示します。

表34-1 DBMS_CRYPTOとDBMS_OBFUSCATION_TOOLKITの機能の比較

パッケージの機能 DBMS_CRYPTO DBMS_OBFUSCATION_TOOLKIT

暗号化アルゴリズム

DES、3DES、AES、RC4、3DES_2KEY

DES、3DES

パディング方式

PKCS5、0(ゼロ)

サポートされない

ブロック暗号連鎖モード

CBC、CFB、ECB、OFB

CBC

暗号化ハッシュ・アルゴリズム

MD5、SHA-1、MD4

MD5

キーを使用するハッシュ(MAC)アルゴリズム

HMAC_MD5、HMAC_SH1

サポートされない

暗号化擬似乱数ジェネレータ

RAWNUMBERBINARY_INTEGER

RAWVARCHAR2

データベース型

RAWCLOBBLOB

RAWVARCHAR2


DBMS_CRYPTODBMS_OBFUSCATION_TOOLKITに代わって使用される予定のパッケージであり、利便性と保守性が大幅に強化されているほか、新しいシステムと既存のシステムの両方に対応できるように広範なアルゴリズムがサポートされています。 なお、3DES_2KEYとMD4は、下位互換性を維持する目的のみでサポートされます。 これらのアルゴリズムでは、3DES、AES、MD5、SHA-1と同等のセキュリティが実現されないため、新しいアプリケーションには極力使用しないでください。


セキュリティ・モデル

Oracle Databaseでは、このパッケージがSYSスキーマにインストールされます。必要に応じて、既存のユーザーおよびロールに、パッケージ・アクセス権限を付与できます。


データ型

DBMS_CRYPTOサブプログラムのパラメータには、次のデータ型が使用されます。

表34-2 DBMS_CRYPTOデータ型

説明

BLOB

ソースまたは宛先のバイナリLOB。

CLOB

ソースまたは宛先の文字LOB(NCLOBを除く)。

PLS_INTEGER

暗号化アルゴリズムのタイプを指定します(データ型がBLOB、CLOB、RAWである場合に使用されます)。

RAW

ソースまたは宛先のRAWバッファ。



アルゴリズム

このパッケージでは、次の暗号化アルゴリズム、修飾子、暗号スイートが事前に定義されています。

表34-3 DBMS_CRYPTO暗号化ハッシュ・アルゴリズム

名前 説明

HASH_MD4

128ビットのハッシュ(入力メッセージのメッセージ・ダイジェスト)を作成します。

HASH_MD5

MD4と同様に128ビットのハッシュを作成しますが、MD4よりも複雑です。

HASH_SH1

Secure Hash Algorithm(SHA)。160ビットのハッシュを作成します。


表34-4 DBMS_CRYPTO MAC(Message Authentication Code)アルゴリズム

名前 説明

HMAC_MD5

MD5ハッシュ関数と同じですが、ハッシュ値を確認するときに秘密鍵が必要となります。

HMAC_SH11

SHAハッシュ関数と同じですが、ハッシュ値を確認するときに秘密鍵が必要となります。


IETF RFC 2104規格に準拠。

表34-5 DBMS_CRYPTO暗号化アルゴリズム

名前 説明

ENCRYPT_DES

データ暗号化規格(DES)。ブロック暗号。長さが56ビットのキーを使用します。

ENCRYPT_3DES_2KEY

データ暗号化規格(DES)。ブロック暗号。2つのキーを使用して1つのブロックを3回処理します。有効長が112ビットのキーを使用します。

ENCRYPT_3DES

データ暗号化規格(DES)。ブロック暗号。1つのブロックを3回処理します。

ENCRYPT_AES128

Advanced Encryption Standard(AES)。ブロック暗号。長さが128ビットのキーを使用します。

ENCRYPT_AES192

Advanced Encryption Standard(AES)。ブロック暗号。長さが192ビットのキーを使用します。

ENCRYPT_AES256

Advanced Encryption Standard(AES)。ブロック暗号。長さが256ビットのキーを使用します。

ENCRYPT_RC4

ストリーム暗号。個々のセッション単位でランダムに生成される秘密鍵を使用します。


表34-6 DBMS_CRYPTOブロック暗号スイート

名前 説明

DES_CBC_PKCS5

ENCRYPT_DES1 + CHAIN_CBC2 + PAD_PKCS53

DES3_CBC_PKCS5

ENCRYPT_3DES1 + CHAIN_CBC2 + PAD_PKCS53


表34-5「DBMS_CRYPTO暗号化アルゴリズム」を参照してください。

表34-7「DBMS_CRYPTOブロック暗号連鎖の修飾子」を参照してください。

表34-8「DBMS_CRYPTOブロック暗号パディングの修飾子」を参照してください。

表34-7 DBMS_CRYPTOブロック暗号連鎖の修飾子

名前 説明

CHAIN_ECB

Electronic Codebook(ECB)。個々のプレーン・テキストブロックを別々に暗号化します。

CHAIN_CBC

暗号ブロック連鎖(CBC)。直前の暗号文ブロックでプレーン・テキストをXOR演算してから暗号化します。

CHAIN_CFB

Cipher-Feedback。ブロック・サイズより小さいデータ単位を暗号化できるようにします。

CHAIN_OFB

Output-Feedback。ブロック暗号を同期ストリーム暗号として実行できるようにします。CFBと似ていますが、直前の出力ブロックのうちnビットがデータ・キューの右端の位置に移動されて、暗号化を待機する点が異なります。


表34-8 DBMS_CRYPTOブロック暗号パディングの修飾子

名前 説明

PAD_PKCS5

PKCS #5(パスワードに基づく暗号化規格)に準拠するパディングを提供します。

PAD_NONE

パディングを実行しないオプションを提供します。コール元はブロック・サイズが正しいことを確認する必要があります。ブロック・サイズが不適切であると、エラーが戻されます。

PAD_ZERO

0(ゼロ)からなるパディングを提供します。



制限事項

DBMS_CRYPTOパッケージでは、VARCHAR2データ型は直接的にサポートされません。VARCHAR2型のデータに対して暗号化操作を実行する場合は、そのデータを事前に汎用的なデータベース・キャラクタ・セットであるAL32UTF8に変換した後、RAWデータ型に変換する必要があります。 これらの変換が完了すると、DBMS_CRYPTOパッケージによる暗号化操作が可能になります。


関連項目:

データ型の変換の詳細は、「変換ルール」を参照してください。


例外

表34-9に、DBMS_CRYPTOで定義された例外を示します。

表34-9 DBMS_CRYPTOの例外

例外 コード 説明

CipherSuiteInvalid

28827

指定した暗号スイートが定義されていません。

CipherSuiteNull

28829

使用する暗号スイートが指定されていません。

KeyNull

28239

暗号化キーが指定されていないか、暗号化キーにNULL値が含まれています。

KeyBadSize

28234

DESキー: 指定されたキー長が短かすぎます。DESキーの長さは少なくとも8バイト(64ビット)にしてください。

AESキー: 指定されたキー長はサポートされていません。AESキーの長さは、128ビット、192ビット、256ビットのいずれかにしてください。

DoubleEncryption

28233

ソース・データは以前に暗号化されています。



使用上の注意

暗号化/復号化のプロシージャとファンクションの使い分け

このパッケージでは、暗号化(ENCRYPT)と復号化(DECRYPT)の機能がプロシージャおよびファンクションの両方の形式で提供されています。これらのプロシージャは、LOBデータ型(CLOB型とBLOB型を対象としてオーバーロードされたデータ型)の暗号化と復号化に使用します。一方、ENCRYPTファンクションとDECRYPTファンクションは、RAWデータ型の暗号化と復号化に使用します。 VARCHAR2型のデータについては、DBMS_CRYPTOパッケージのファンクションを使用して暗号化操作を実行する前に、RAWデータ型に変換する必要があります。

HASHファンクションとMACファンクションの使い分け

このパッケージには、HASHファンクションおよびMACファンクションという2種類の異なる一方向ハッシュ関数が用意されています。ハッシュ関数は任意の長さの入力メッセージを処理して、固定長のハッシュ値を戻します。一方向ハッシュ関数は片方向のみに動作します。つまり、入力メッセージからハッシュ値を計算するのは簡単ですが、特定のハッシュ値から入力メッセージを生成するのはきわめて困難です。ハッシュ値の安全性を維持するには、ハッシュ値の長さを少なくとも128ビットにする必要があります。

ハッシュ値を使用すると、データが変更されたかどうかを確認することができます。 たとえば、あるユーザーがデータを保存する前に、保存対象のデータに対してDBMS_CRYPTO.HASHを実行し、ハッシュ値を作成したと想定します。そのユーザーが後で保存したデータを取り出すときは、同じアルゴリズムを指定し、保存済データに対してハッシュ関数を再実行します。2回目のハッシュ値が最初のハッシュ値と同じであれば、データは変更されていません。ハッシュ値は「データの指紋」のようなものであり、データの整合性を保証するために使用されます。

DBMS_CRYPTOパッケージのHASHファンクションは一方向ハッシュ関数であり、RAW型またはLOB型のデータからハッシュ値を生成するために使用できます。MACファンクションも一方向ハッシュ関数ですが、秘密鍵の機能が追加されています。 このファンクションはDBMS_CRYPTO.HASHファンクションと同様に機能しますが、秘密鍵を持つユーザーのみがハッシュ値を照合できます。

MACを使用すると、複数のユーザー間でファイルを認証できます。また、1人のユーザーがMACを使用して、自分のファイルがウィルスなどによって変更されたかどうかを調べることもできます。自分のファイルのMACを計算して、そのMAC値を表に保存できます。MACファンクションを使用しなければ、ウィルスが新しいハッシュ値を計算して、表内の既存のハッシュ値を置き換えてしまう可能性があります。MACを使用している場合、秘密鍵を知らないユーザーは、ハッシュ値の読取りや書換えを実行できません。

暗号化キーの作成と保守に関する注意事項

DBMS_CRYPTOパッケージには暗号化キー用の乱数ジェネレータがありますが、暗号化キーを保守するメカニズムは用意されていません。アプリケーションを開発するときには、このパッケージで使用される暗号化キーを安全に作成して保存するように注意する必要があります。 また、DBMS_CRYPTOパッケージによる暗号化操作と復号化操作はクライアント上ではなくサーバー上で実行されることに注意してください。したがって、クライアントとサーバー間で暗号化キーを転送するときは、ネットワーク暗号化機能を使用して、クライアントとサーバー間の接続を保護する必要があります。適切な保護対策を実施しないと、ネットワーク上で暗号化キーが不正傍受される可能性があります。

DBMS_CRYPTOパッケージには独自にキーを作成する機能はありませんが、キーの作成時に使用できるサポート・ツールが用意されています。たとえば、RANDOMBYTESファンクションをコールすると、暗号化キー用の擬似乱数バイト列を生成できます (RANDOMBYTESファンクションをコールすると、DBMS_OBFUSCATION_TOOLKITパッケージのDESGETKEYファンクションまたはDES3GETKEYファンクションをコールしたときと同様の処理が実行されます)。

DES用の暗号化キーを作成するときには、特定のキー値が弱点キーまたは準弱点キーとみなされることに注意してください。アルゴリズムのパターンと暗号化キーの初期値のパターンを組み合せることで、暗号分析に対して脆弱な暗号文が生成される場合、その暗号化キーは弱点キーまたは準弱点キーとみなされます。脆弱な暗号文が生成されないようにするためには、弱点キーまたは準弱点キーであることが判明しているDESキーを事前に除外する必要があります。弱点キーまたは準弱点キーの一覧は、複数のパブリック・インターネット・サイトで参照できます。


関連項目:

  • ネットワーク暗号化およびSSLの構成方法の詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。

  • 暗号化キーの安全な保存方法の詳細は、「キー管理」を参照してください。

  • 「RANDOMBYTESファンクション」


変換ルール


次に、暗号ブロック連鎖およびPKCS#5準拠のパディングを使用した256ビットのAESアルゴリズムを使用して、事前定義済のinput_stringを暗号化および復号化するPL/SQLブロックを示します。

DECLARE
   input_string       VARCHAR2 (200) :=  'Secret Message';
   output_string      VARCHAR2 (200);
   encrypted_raw      RAW (2000);             -- stores encrypted binary text
   decrypted_raw      RAW (2000);             -- stores decrypted binary text
   num_key_bytes      NUMBER := 256/8;        -- key length 256 bits (32 bytes)
   key_bytes_raw      RAW (32);               -- stores 256-bit encryption key
   encryption_type    PLS_INTEGER :=          -- total encryption type
                            DBMS_CRYPTO.ENCRYPT_AES256
                          + DBMS_CRYPTO.CHAIN_CBC
                          + DBMS_CRYPTO.PAD_PKCS5;
BEGIN
   DBMS_OUTPUT.PUT_LINE ( 'Original string: ' || input_string);
   key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES (num_key_bytes);
   encrypted_raw := DBMS_CRYPTO.ENCRYPT
      (
         src => UTL_I18N.STRING_TO_RAW (input_string,  'AL32UTF8'),
         typ => encryption_type,
         key => key_bytes_raw
      );
    -- The encrypted value "encrypted_raw" can be used here

   decrypted_raw := DBMS_CRYPTO.DECRYPT
      (
         src => encrypted_raw,
         typ => encryption_type,
         key => key_bytes_raw
      );
   output_string := UTL_I18N.RAW_TO_CHAR (decrypted_raw, 'AL32UTF8');

   DBMS_OUTPUT.PUT_LINE ('Decrypted string: ' || output_string);
END;

DBMS_CRYPTOサブプログラムの要約

表34-10 DBMS_CRYPTOパッケージのサブプログラム

サブプログラム 説明

DECRYPTファンクション


ユーザーが指定するキーとオプションのIV(初期化ベクター)に基づき、ストリーム暗号またはブロック暗号を使用してRAWデータを復号化します。

DECRYPTプロシージャ


ユーザーが指定するキーとオプションのIVに基づき、ストリーム暗号またはブロック暗号を使用してLOBデータを復号化します。

ENCRYPTファンクション


ユーザーが指定するキーとオプションのIVに基づき、ストリーム暗号またはブロック暗号を使用してRAWデータを暗号化します。

ENCRYPTプロシージャ


ユーザーが指定するキーとオプションのIVに基づき、ストリーム暗号またはブロック暗号を使用してLOBデータを暗号化します。

HASHファンクション


サポートされる暗号化ハッシュ・アルゴリズム(MD4、MD5、SHA-1)の1つをデータに適用します。

MACファンクション


Message Authentication Code(MAC)アルゴリズム(MD5またはSHA-1)をデータに適用し、キーを使用してメッセージを保護します。

RANDOMBYTESファンクション


暗号的に安全な擬似乱数バイト列を含むRAWデータ値を戻します。暗号化キー用の乱数ジェネレータとして使用できます。

RANDOMINTEGERファンクション


BINARY_INTEGERデータ型の乱数を戻します。

RANDOMNUMBERファンクション


NUMBERデータ型の128ビット整数を戻します。



DECRYPTファンクション

このファンクションは、ユーザーが指定するキーとオプションのIV(初期化ベクター)に基づき、ストリーム暗号またはブロック暗号を使用してRAWデータを復号化します。

構文

DBMS_CRYPTO.DECRYPT(
   src IN RAW,
   typ IN PLS_INTEGER,
   key IN RAW,
   iv  IN RAW DEFAULT NULL)
 RETURN RAW;

プラグマ

pragma restrict_references(decrypt,WNDS,RNDS,WNPS,RNPS);

パラメータ

表34-11 DECRYPTファンクションのパラメータ

パラメータ名 説明

src

復号化するRAWデータ。

typ

使用する暗号の種類(ストリーム暗号またはブロック暗号)および修飾子。

key

復号化に使用するキー。

iv

ブロック暗号で使用するオプションの初期化ベクター(IV)。デフォルトはNULLです。


使用上の注意


DECRYPTプロシージャ

これらのプロシージャは、ユーザーが指定するキーとオプションのIV(初期化ベクター)に基づき、ストリーム暗号またはブロック暗号を使用してLOBデータを復号化します。

構文

DBMS_CRYPTO.DECRYPT(
   dst IN OUT NOCOPY BLOB,
   src IN            BLOB,
   typ IN            PLS_INTEGER,
   key IN            RAW,
   iv  IN            RAW          DEFAULT NULL);

DBMS_CRYPT.DECRYPT(
   dst IN OUT NOCOPY CLOB         CHARACTER SET ANY_CS,
   src IN            BLOB,
   typ IN            PLS_INTEGER,
   key IN            RAW,
   iv  IN            RAW          DEFAULT NULL);

プラグマ

pragma restrict_references(decrypt,WNDS,RNDS,WNPS,RNPS);

パラメータ

表34-12 DECRYPTプロシージャのパラメータ

パラメータ名 説明

dst

出力データのLOBロケータ。出力のLOB <dst>の値は上書きされます。

src

入力データのLOBロケータ。

typ

使用する暗号の種類(ストリーム暗号またはブロック暗号)および修飾子。

key

復号化に使用するキー。

iv

ブロック暗号で使用するオプションの初期化ベクター(IV)。デフォルトはすべて0(ゼロ)です。



ENCRYPTファンクション

このファンクションは、ユーザーが指定するキーとオプションのIV(初期化ベクター)に基づき、ストリーム暗号またはブロック暗号を使用してRAWデータを暗号化します。

構文

DBMS_CRYPTO.ENCRYPT(
   src IN RAW,
   typ IN PLS_INTEGER,
   key IN RAW,
   iv  IN RAW          DEFAULT NULL)
 RETURN RAW;

プラグマ

pragma restrict_references(encrypt,WNDS,RNDS,WNPS,RNPS);

パラメータ

表34-13 ENCRYPTファンクションのパラメータ

パラメータ名 説明

src

暗号化するRAWデータ。

typ

使用する暗号の種類(ストリーム暗号またはブロック暗号)および修飾子。

key

データの暗号化に使用する暗号化キー。

iv

ブロック暗号で使用するオプションの初期化ベクター(IV)。デフォルトはNULLです。


使用上の注意


ENCRYPTプロシージャ

これらのプロシージャは、ユーザーが指定するキーとオプションのIV(初期化ベクター)に基づき、ストリーム暗号またはブロック暗号を使用してLOBデータを暗号化します。

構文

DBMS_CRYPTO.ENCRYPT(
   dst IN OUT NOCOPY BLOB,
   src IN            BLOB,
   typ IN            PLS_INTEGER,
   key IN            RAW,
   iv  IN            RAW          DEFAULT NULL);

DBMS_CRYPTO.ENCRYPT(
   dst IN OUT NOCOPY BLOB,
   src IN            CLOB         CHARACTER SET ANY_CS,
   typ IN            PLS_INTEGER,
   key IN            RAW,
   iv  IN            RAW          DEFAULT NULL);

プラグマ

pragma restrict_references(encrypt,WNDS,RNDS,WNPS,RNPS);

パラメータ

表34-14 ENCRYPTプロシージャのパラメータ

パラメータ名 説明

dst

出力データのLOBロケータ。出力のLOB <dst>の値は上書きされます。

src

入力データのLOBロケータ。

typ

使用する暗号の種類(ストリーム暗号またはブロック暗号)および修飾子。

key

データの暗号化に使用する暗号化キー。

iv

ブロック暗号で使用するオプションの初期化ベクター(IV)。デフォルトはNULLです。


使用上の注意

ENCRYPTプロシージャの使用上の注意は、「変換ルール」を参照してください。


HASHファンクション

一方向ハッシュ関数は、可変長の入力文字列(データ)をハッシュ値と呼ばれる固定長の(通常は入力文字列より小さい)出力文字列に変換します。ハッシュ値は、入力データの一意の識別子(指紋のようなもの)として使用できます。ハッシュ値を使用すると、データが変更されたかどうかを確認することができます。

一方向ハッシュ関数は片方向のみに動作するハッシュ関数です。つまり、入力データからハッシュ値を計算するのは簡単ですが、特定のハッシュ値からデータを生成するのは困難です。したがって、一方向ハッシュ関数はデータの整合性を保証するのに役立ちます。一方向ハッシュ関数の使用方法の詳細は、「HASHファンクションとMACファンクションの使い分け」を参照してください。

HASHファンクションは、サポートされる暗号化ハッシュ・アルゴリズム(表34-3を参照)の1つをデータに適用します。

構文

DBMS_CRYPTO.Hash (
   src IN RAW,
   typ IN PLS_INTEGER)
 RETURN RAW;

DBMS_CRYPTO.Hash (
   src IN BLOB,
   typ IN PLS_INTEGER)
 RETURN RAW;

DBMS_CRYPTO.Hash (
   src IN CLOB CHARACTER SET ANY_CS,
   typ IN PLS_INTEGER)
 RETURN RAW;

プラグマ

pragma restrict_references(hash,WNDS,RNDS,WNPS,RNPS);

パラメータ

表34-15 HASHファンクションのパラメータ

パラメータ名 説明

src

ハッシュ値が計算されるソース・データ

typ

ソース・データに適用するハッシュ・アルゴリズム


使用上の注意

ハッシュ・アルゴリズムとして、定数HASH_SH1で指定されるSHA-1(Secure Hash Algorithm)を使用することをお薦めします。SHA-1アルゴリズムは、MD4やMD5よりも不当攻撃に対する抵抗力があります。メッセージ・ダイジェスト・アルゴリズムを使用する必要がある場合は、MD4よりもMD5のほうが強力なセキュリティ機能を提供します。


MACファンクション

MAC(Message Authentication Code)ファンクションは、キーで補強された一方向ハッシュ関数です。MACファンクションは「HASHファンクション」で説明した一方向ハッシュ関数と同様の機能を持っていますが、秘密鍵の機能が追加されています。同じ秘密鍵を持つユーザーのみがハッシュ値を照合できます。MACの使用方法の詳細は、「HASHファンクションとMACファンクションの使い分け」も参照してください。

MACファンクションはMACアルゴリズムをデータに適用し、キーを使用してメッセージを保護します。 このパッケージで定義されているMACアルゴリズムのリストは、表34-4を参照してください。

構文

DBMS_CRYPTO.MAC (
   src IN RAW,
   typ IN PLS_INTEGER,
   key IN RAW)
 RETURN RAW;

DBMS_CRYPTO.MAC (
   src IN BLOB,
   typ IN PLS_INTEGER
   key IN RAW)
 RETURN RAW;

DBMS_CRYPTO.MAC (
   src IN CLOB CHARACTER SET ANY_CS,
   typ IN PLS_INTEGER
   key IN RAW)
 RETURN RAW;

プラグマ

pragma restrict_references(mac,WNDS,RNDS,WNPS,RNPS);

パラメータ

表34-16 MACファンクションのパラメータ

パラメータ名 説明

src

MACアルゴリズムが適用されるソース・データ

typ

ソース・データに適用するMACアルゴリズム

key

MACアルゴリズムで使用するキー



RANDOMBYTESファンクション

このファンクションは、暗号的に安全な擬似乱数バイト列を含むRAWデータ値を戻します。暗号化キー用の乱数ジェネレータとしてこのファンクションを使用できます。 RANDOMBYTESファンクションのアルゴリズムはRSA X9.31 PRNG(Pseudo-Random Number Generator)に基づいており、sqlnet.oraファイルのパラメータSQLNET.CRYPTO_SEEDからエントロピ(乱数シード)が取り出されます。

構文

DBMS_CRYPTO.RANDOMBYTES (
   number_bytes IN POSITIVE)
 RETURN RAW;

プラグマ

pragma restrict_references(randombytes,WNDS,RNDS,WNPS,RNPS);

パラメータ

表34-17 RANDOMBYTESファンクションのパラメータ

パラメータ名 説明

number_bytes

生成する擬似乱数バイトのバイト数


使用上の注意


RANDOMINTEGERファンクション

このファンクションは、OracleのBINARY_INTEGERデータ型で表現可能な範囲の整数を戻します。

構文

DBMS_CRYPTO.RANDOMINTEGER
 RETURN BINARY_INTEGER;

プラグマ

pragma restrict_references(randominteger,WNDS,RNDS,WNPS,RNPS);

RANDOMNUMBERファンクション

このファンクションは、OracleのNUMBERデータ型で表現可能な範囲([0..2**128-1])の整数乱数を戻します。

構文

DBMS_CRYPTO.RANDOMNUMBER
 RETURN NUMBER;

プラグマ

pragma restrict_references(randomnumber,WNDS,RNDS,WNPS,RNPS);