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行)