すべてのプロダクト
Search
ドキュメントセンター

PolarDB:DBMS_CRYPTO

最終更新日:May 24, 2024

DBMS_CRYPTOパッケージには、RAW、バイナリラージオブジェクト (BLOB) 、およびキャラクターラージオブジェクト (CLOB) データを暗号化または復号化できる関数とストアドプロシージャが用意されています。 DBMS_CRYPTOパッケージの関数を使用して、暗号的に安全な乱数を生成できます。

サブプログラム

サブプログラム

説明

ENCRYPT機能

この関数は、Advanced Encryption Standard (AES) 、AES128、AES192、AES256、Data Encryption Standard (DES) 、およびTriple Data Encryption Standard (3DES) 暗号化アルゴリズムをサポートします。 また、noneとpkcsのパディングモード、およびcbcとecbの暗号化モードもサポートしています。

ENCRYPT手続き

これらのストアドプロシージャは、AES、AES128、AES192、AES256、DES、および3DES暗号化アルゴリズムをサポートします。 また、noneとpkcsのパディングモード、およびcbcとecbの暗号化モードもサポートしています。

DECRYPT関数

この関数は、ENCRYPT関数および手順によって暗号化されたコンテンツを復号化するために使用できます。

DECRYPTプロシージャ

これらのストアドプロシージャを使用して、ENCRYPT関数およびプロシージャによって暗号化されたコンテンツを復号することができる。

ハッシュ関数

この関数は、RAW、BLOB、およびCLOBデータで使用できるmd4、md5、sha1、sha256、sha384、およびsha512メッセージダイジェストアルゴリズムをサポートします。

MAC関数

この関数は、RAW、BLOB、およびCLOBデータで使用できるmd5、sha1、sha256、sha384、およびsha512メッセージ認証アルゴリズムをサポートします。

RANDOMBYTES関数

この関数は、長さが最大1,024バイトのランダムな文字列を生成します。

ENCRYPT機能

この関数は、指定された暗号化アルゴリズムを使用してRAWデータを暗号化します。

構文

<bx id="1" type="code" text="code code=" DBMS_CRYPTO.ENCRYPT (
RAWでsrc、PLS_INTEGERのtyp、キーIN RAW,
iv RAWデフォルトNULLで)
RETURN RAW;"data-tag=" codeblock "id=" iukrbe "outputclass=" language-postgresql "title=" "uuid=" li3wcc5eaqqoe8ijk7 ""/>DBMS_CRYPTO.ENCRYPT (
   RAWでsrc、
   PLS_INTEGERのtyp、
   キーIN RAW,
   iv RAWデフォルトNULLで)
 RETURN RAW; 

Parameters

パラメーター

説明

src

暗号化するRAWデータ。

typ

ストリームまたはブロックの暗号化タイプと修飾子。

キー

暗号化キー。

iv

初期化ベクトル。 デフォルト値は NULL です。

次の例は、指定された暗号化アルゴリズムを使用してRAWデータを暗号化する方法を示しています。

<bx id="1" type="code" text="code id=" wdg1tp "title=" "uuid=" li3wpqoai0lgu8sxxx "code=" DECLARE
enc_typ整数;
enc_res raw;
開始
enc_typ := dbms_crypto.ENCRYPT_DES + dbms_crypto.CHAIN_CBC + dbms_crypto.PAD_PKCS5;
enc_res := dbms_crypto.encrypt(utl_raw.cast_to_raw('1234567890!@#$%^& amp;* qwertyuiop ')) 、enc_typ、utl_raw.cast_to_raw('314639') 、NULL);
dbms_output.put_line(enc_res);
エンド;
-- output --
-- \x12dcbddc1c6f743401e8c383855e9a06dc8dde2b997a07067afd386754f3a84d "data-tag=" codeblock "outputclass=" language-postgresql ""/>DECLARE
    enc_typ整数;
    enc_res raw;
開始
    enc_typ := dbms_crypto.ENCRYPT_DES + dbms_crypto.CHAIN_CBC + dbms_crypto.PAD_PKCS5;
    enc_res := dbms_crypto.encrypt(utl_raw.cast_to_raw('1234567890!@#$%^& * qwertyuiop')) 、enc_typ、utl_raw.cast_to_raw('314639') 、NULL);
    dbms_output.put_line(enc_res);
エンド;
-- output --
-- \x12dcbddc1c6f743401e8c383855e9a06dc8dde2b997a07067afd386754f3a84d 

ENCRYPTプロシージャ

このストアドプロシージャは、指定された暗号化アルゴリズムを使用してBLOBまたはCLOBデータを暗号化します。

構文

<bx id="1" type="code" text="code code=" DBMS_CRYPTO.ENCRYPT (
dst IN OUT BLOB、BLOBのsrc、PLS_INTEGERのtyp、キーIN RAW,
iv RAWデフォルトNULLで);

DBMS_CRYPTO.ENCRYPT (
dst IN OUT BLOB、CLOBのsrc、PLS_INTEGERのtyp、キーIN RAW,
iv RAW DEFAULT NULLで);"uuid=" libctlqdtx3mpn29pwl "data-tag=" codeblock "outputclass=" language-postgresql "id=" 05adc29201coj ""/>DBMS_CRYPTO.ENCRYPT ()
 dst IN OUT BLOB、
 BLOBのsrc、
 PLS_INTEGERのtyp、
 キーIN RAW,
 iv RAWデフォルトNULLで);

DBMS_CRYPTO.ENCRYPT (
 dst IN OUT BLOB、
 CLOBのsrc、
 PLS_INTEGERのtyp、
 キーIN RAW,
 ivでRAWデフォルトNULL); 

Parameters

パラメーター

説明

dst

BLOBまたはCLOBタイプの出力データ。 dstパラメーターの元の値は、指定された値で上書きされます。

src

暗号化するBLOBまたはCLOBデータ。

typ

ストリームまたはブロックの暗号化タイプと修飾子。

キー

暗号化キー。

iv

初期化ベクトル。 デフォルト値は NULL です。

次の例は、指定された暗号化アルゴリズムを使用してBLOBまたはCLOBデータを暗号化する方法を示しています。

<bx id="1" type="code" text="code code=" DECLARE
enc_typ整数;
enc_res raw;
開始
enc_typ := dbms_crypto.DES_CBC_PKCS5;

-- blobを使用したプロシージャ
dbms_crypto.encrypt(enc_res、utl_raw.cast_to_raw('1234567890!@#$%^& amp;* qwertyuiop ')) 、enc_typ、utl_raw.cast_to_raw('314639') 、NULL);
dbms_output.put_line(enc_res);
-- clobのプロシージャ
dbms_crypto.encrypt(enc_res, '1234567890!@#$%^& amp;* qwertyuiop'::clob, enc_typ, utl_raw.cast_to_raw('314639'), NULL);
dbms_output.put_line(enc_res);
エンド;
-- output
-- \x12dcbddc1c6f743401e8c383855e9a06dc8dde2b997a07067afd386754f3a84d
-- \x12dcbddc1c6f743401e8c383855e9a06dc8dde2b997a07067afd386754f3a84d "id=" 120gff "title=" "uuuid=" libd0fiyvtt9up89rhg "data-tag=" codeblock "outputclass=" language-postgresql ""/>DECLARE
    enc_typ整数;
    enc_res raw;
開始
    enc_typ := dbms_crypto.DES_CBC_PKCS5;

    -- blobを使用したプロシージャ
    dbms_crypto.encrypt(enc_res、utl_raw.cast_to_raw('1234567890!@#$%^& * qwertyuiop')) 、enc_typ、utl_raw.cast_to_raw('314639') 、NULL);
    dbms_output.put_line(enc_res);
    -- clobのプロシージャ
    dbms_crypto.encrypt(enc_res, '1234567890!@#$%^& * qwertyuiop'::clob, enc_typ, utl_raw.cast_to_raw('314639'), NULL);
    dbms_output.put_line(enc_res);
エンド;
-- output
-- \x12dcbddc1c6f743401e8c383855e9a06dc8dde2b997a07067afd386754f3a84d
-- \x12dcbddc1c6f743401e8c383855e9a06dc8dde2b997a07067afd386754f3a84d 

DECRYPT関数

この関数は、指定された暗号化アルゴリズムを使用して、暗号化されたRAWデータを復号します。

構文

<bx id="1" type="code" text="code id=" tnz2hb "title=" "uuid=" libd95e91vm7w8g00zh "code=" DBMS_CRYPTO.DECRYPT (
RAWでsrc、PLS_INTEGERのtyp、キーIN RAW,
iv RAWデフォルトNULLで)
RETURN RAW;"data-tag=" codeblock "outputclass=" language-postgresql ""/>DBMS_CRYPTO.DECRYPT (
   RAWでsrc、
   PLS_INTEGERのtyp、
   キーIN RAW,
   iv RAWデフォルトNULLで)
 RETURN RAW; 

Parameters

パラメーター

説明

src

復号化したいRAWデータ。

typ

ストリームまたはブロックの暗号化タイプと修飾子。

キー

暗号化キー。

iv

初期化ベクトル。 デフォルト値は NULL です。

次の例は、指定された暗号化アルゴリズムを使用して、暗号化されたRAWデータを復号する方法を示しています。

<bx id="1" type="code" text="code id=" vp9bdb "title=" "uuid=" libd9jktuwipzgrcqrc "height=" 289 "code=" DECLARE
enc_typ整数;
dec_res raw;
開始
enc_typ := dbms_crypto.DES_CBC_PKCS5;
dec_res := dbms_crypto.decrypt(dbms_crypto.encrypt(utl_raw.cast_to_raw('1234567890!@#$%^& amp;* qwertyuiop ')) 、enc_typ、utl_raw.cast_to_raw ('314_cast.3') 、NULL)
dbms_output.put_line(dec_res);
エンド;
-- output
-- \x3132333435363738393021402324255e262a71776572747975696f70 "data-tag=" codeblock "outputclass=" language-postgresql ""/>DECLARE
    enc_typ整数;
    dec_res raw;
開始
    enc_typ := dbms_crypto.DES_CBC_PKCS5;
    dec_res := dbms_crypto.decrypt(dbms_crypto.encrypt(utl_raw.cast_to_raw('1234567890!@#$%^& * qwertyuiop')) 、enc_typ、utl_raw.cast_to_raw('314639') 、NULL)
    dbms_output.put_line(dec_res);
エンド;
-- output
-- \x3132333435363738393021402324255e262a71776572747975696f70 

DECRYPTプロシージャ

これらのストアドプロシージャは、指定された暗号化アルゴリズムを使用して、暗号化されたBLOBまたはCLOBデータを復号します。

構文

<bx id="1" type="code" text="code id=" 36dbuf "title=" "uuuid=" libds2jjj595sn6lt3o "code=" DBMS_CRYPTO.DECRYPT ()
dst IN OUT BLOB、BLOBのsrc、PLS_INTEGERのtyp、キーIN RAW,
iv RAWデフォルトNULLで);

DBMS_CRYPT.DECRYPT (
dstインアウトクラブ、BLOBのsrc、PLS_INTEGERのtyp、キーIN RAW,
iv RAW DEFAULT NULLで);"data-tag=" codeblock "outputclass=" language-postgresql ""/>DBMS_CRYPTO.DECRYPT (
   dst IN OUT BLOB、
   BLOBのsrc、
   PLS_INTEGERのtyp、
   キーIN RAW,
   iv RAWデフォルトNULLで);

DBMS_CRYPT.DECRYPT (
   dstインアウトクラブ、
   BLOBのsrc、
   PLS_INTEGERのtyp、
   キーIN RAW,
   ivでRAWデフォルトNULL); 

Parameters

パラメーター

説明

dst

BLOBまたはCLOBタイプの出力データ。 dstパラメーターの元の値は、指定された値で上書きされます。

src

復号化するBLOBまたはCLOBデータ。

typ

ストリームまたはブロックの暗号化タイプと修飾子。

キー

暗号化キー。

iv

初期化ベクトル。 デフォルト値は NULL です。

次の例は、指定された暗号化アルゴリズムを使用してBLOBまたはCLOBデータを復号する方法を示しています。

<bx id="1" type="code" text="code id=" cl7buc "title=" "uuuid=" libdz2ugen8if43jdip "code=" DECLARE
enc_typ整数;
enc_res raw;
dec_res raw;
開始
enc_typ := dbms_crypto.DES_CBC_PKCS5;

-- blobを使用したプロシージャ
dbms_crypto.encrypt(enc_res、utl_raw.cast_to_raw('1234567890!@#$%^& amp;* qwertyuiop ')) 、enc_typ、utl_raw.cast_to_raw('314639') 、NULL);
dbms_crypto.decrypt(dec_res, enc_res, enc_typ, utl_raw.cast_to_raw('314639'), NULL);
dbms_output.put_line(dec_res);

-- clobのプロシージャ
dbms_crypto.encrypt(enc_res, '1234567890!@#$%^& amp;* qwertyuiop'::clob, enc_typ, utl_raw.cast_to_raw('314639'), NULL);
dbms_crypto.decrypt(dec_res, enc_res::clob, enc_typ, utl_raw.cast_to_raw('314639'), NULL);
dbms_output.put_line(dec_res);
エンド;
-- output
-- \x3132333435363738393021402324255e262a71776572747975696f70
-- \x3132333435363738393021402324255e262a71776572747975696f70 "data-tag=" codeblock "outputclass=" language-postgresql ""/>DECLARE
    enc_typ整数;
    enc_res raw;
    dec_res raw;
開始
    enc_typ := dbms_crypto.DES_CBC_PKCS5;

    -- blobを使用したプロシージャ
    dbms_crypto.encrypt(enc_res、utl_raw.cast_to_raw('1234567890!@#$%^& * qwertyuiop')) 、enc_typ、utl_raw.cast_to_raw('314639') 、NULL);
    dbms_crypto.decrypt(dec_res, enc_res, enc_typ, utl_raw.cast_to_raw('314639'), NULL);
    dbms_output.put_line(dec_res);

    -- clobのプロシージャ
    dbms_crypto.encrypt(enc_res, '1234567890!@#$%^& * qwertyuiop'::clob, enc_typ, utl_raw.cast_to_raw('314639'), NULL);
    dbms_crypto.decrypt(dec_res, enc_res::clob, enc_typ, utl_raw.cast_to_raw('314639'), NULL);
    dbms_output.put_line(dec_res);
エンド;
-- output
-- \x3132333435363738393021402324255e262a71776572747975696f70
-- \x3132333435363738393021402324255e262a71776572747975696f70 

ハッシュ関数

この関数は、入力RAWデータのハッシュ値を計算するために使用されます。

構文

<bx id="1" type="code" text="code id=" dgkfks "title=" "uuuid=" libe73cd59wqe09wb99 "code=" DBMS_CRYPTO.Hash (
RAWでsrc、PLS_INTEGERのtyp)
RETURN RAW;

DBMS_CRYPTO.Hash (
CLOBのsrc、PLS_INTEGERのtyp)
RETURN RAW;"data-tag=" codeblock "outputclass=" language-postgresql ""/>DBMS_CRYPTO.Hash (
   RAWでsrc、
   PLS_INTEGERのtyp)
 RETURN RAW;

DBMS_CRYPTO.Hash (
   CLOBのsrc、
   PLS_INTEGERのtyp)
 RETURN RAW; 

パラメーター

パラメーター

説明

src

ハッシュ値を計算する入力データ。

typ

使用するハッシュアルゴリズム。The hash algorithm to use.

RAWデータのハッシュ値の計算例を次に示します。

<bx id="1" type="code" text="code id=" qqdtzz "title=" "uuid=" libefxx8i7ebbd22o38 "code=" DECLARE
hash_res raw;
開始
hash_res := dbms_crypto.hash(utl_raw.cast_to_raw('1234567890!@#$%^& amp;* qwertyuiop ') 、dbms_crypto.HASH_SH256);
dbms_output.put_line(hash_res);
エンド;
-- output
-- \x17220452ab8b4134747fbb5ca594106fa06cef7e0571a88ca31e19447d42c894 "data-tag=" codeblock "outputclass=" language-postgresql ""/>DECLARE
    hash_res raw;
開始
    hash_res := dbms_crypto.hash(utl_raw.cast_to_raw('1234567890!@#$%^& * qwertyuiop ')) 、dbms_crypto.HASH_SH256);
    dbms_output.put_line(hash_res);
エンド;
-- output
-- \x17220452ab8b4134747fbb5ca594106fa06cef7e0571a88ca31e19447d42c894 

MAC関数

これらの関数を用いて、入力RAWデータのHMAC値を算出する。

構文

<bx id="1" type="code" text="code id=" 5d836ab301ai7 "title=" "uuid=" libeqtm5yefwvs6hks "code=" DBMS_CRYPTO.MAC ()
RAWでsrc、PLS_INTEGERのtyp、キーIN RAW)
RETURN RAW;

DBMS_CRYPTO.MAC (
CLOBのsrc、PLS_INTEGERのtyp
キーIN RAW)
RETURN RAW;"data-tag=" codeblock "outputclass=" language-postgresql ""/>DBMS_CRYPTO.MAC (
   RAWでsrc、
   PLS_INTEGERのtyp、
   キーIN RAW)
 RETURN RAW;

DBMS_CRYPTO.MAC (
   CLOBのsrc、
   PLS_INTEGERのtyp
   キーIN RAW)
 RETURN RAW; 

Parameters

パラメーター

説明

src

HMAC値を計算するデータを入力します。

typ

使用するMACアルゴリズム。The MAC algorithm to use.

キー

MACアルゴリズムに使用されるキー。

次の例は、RAWデータのHMAC値を計算する方法を示しています。

<bx id="1" type="code" text="code id=" 42zeqx "title=" "uuuid=" libeyrz8hhb8blqy5on "code=" DECLARE
mac_res raw;
開始
mac_res := dbms_crypto.mac(utl_raw.cast_to_raw('1234567890!@#$%^& amp;* qwertyuiop ')) 、dbms_crypto.HMAC_MD5、utl_raw.cast_to_raw('314639'));
dbms_output.put_line(mac_res);
エンド;
-- output
-- \xad8641796c66172f187357ca12ceb211 "data-tag=" codeblock "outputclass=" language-postgresql ""/>DECLARE
    mac_res raw;
開始
    mac_res := dbms_crypto.mac(utl_raw.cast_to_raw('1234567890!@#$%^& * qwertyuiop')) 、dbms_crypto.HMAC_MD5、utl_raw.cast_to_raw('314639'));
    dbms_output.put_line(mac_res);
エンド;
-- output
-- \xad8641796c66172f187357ca12ceb211 

RANDOMBYTES関数

この関数は、RAWデータに対して指定された長さのランダム値を返すために使用されます。

構文

<bx id="1" type="code" text="code id=" az5gbm "title=" "uuid=" libf3cgr5qh8hwemjsc "code=" DBMS_CRYPTO.RANDOMBYTES ()
number_bytes IN INTEGER)
RETURN RAW;"data-tag=" codeblock "outputclass=" language-postgresql ""/>DBMS_CRYPTO.RANDOMBYTES (
   number_bytes IN INTEGER)
 RETURN RAW; 

Parameters

パラメーター

説明

number_bytes

返されるバイト数。

次の例は、指定したバイト数のランダム値を返す方法を示しています。

<bx id="1" type="code" text="code id=" v8ryag "title=" "uuid=" libf4iguer7gbgaqwfj "code=" select ms_crypto.randombytes(16);
ランダム化
------------------------------------
\x560d5037ee298b187a421df030f5ee35
(1行) "data-tag=" codeblock "outputclass=" language-postgresql ""/>select dbms_crypto.randombytes(16);
            ランダム化
------------------------------------
 \x560d5037ee298b187a421df030f5ee35
(1行)