|
 |
|
|
文字列を暗号化する(10g)(DBMS_CRYPTO.ENCRYPT) |
|
スポンサード リンク
文字列を暗号化するには、DBMS_CRYPTO.ENCRYPTファンクションを使用します。
DBMS_CRYPTOパッケージの実行権限は、SYSユーザーしかありませんので、SYSユーザーでログインして、以下のようにDBMS_CRYPTOパッケージを実行したいユーザーに対して、EXECUTE権限を付与する必要があります。
SYSユーザーログイン : SQLPLUS SYS/CHANGE_ON_INSTALL AS SYSDBA
EXECUTE権限付与 : GRANT EXECUTE ON DBMS_CRYPTO TO ユーザー名;
DBMS_CRYPTO.ENCRYPT( SRC => 暗号化するデータ ,
TYP => 暗号化アルゴリズム ,
KEY => 暗号化キー ); |
ファンクション「DBMS_CRYPTO.ENCRYPT」は、以下の入力パラメータで指定した情報から、暗号化したRAW型データを返します。
暗号化した
RAW型のサイズは、8の倍数となります。
1〜7バイトの文字列を暗号化した場合、RAW(8)で返されます。
8〜15バイトの文字列を暗号化すると、RAW(16)で返されます。
16〜23バイトの文字列を暗号化すると、RAW(24)で返されます。
入力パラメータの指定内容
SRC : 暗号化したいデータをRAW型で指定します。(文字列はRAW型に変換します)
TYP : 暗号化アルゴリズムを指定します。詳細は、以下の表を参照する。
KEY : 暗号化キーデータをRAW型で指定します。
暗号化キーは、暗号化と復号化で同じ情報を指定する必要があります。
|
● 暗号化アルゴリズムに、下記の(1)暗号化アルゴリズム、(2)ブロック暗号連鎖、(3)ブロック暗号パディングの組み合わせで指定します。
例えば、以下の組み合わせの場合、ENCRYPT_DES+CHAIN_CBC+PAD_PKCS5で指定します。
暗号化アルゴリズム : DES
ブロック暗号連鎖 : CCB
ブロック暗号パディング : PKCS
上記の暗号化の組み合わせは、(4)暗号化定義のセット で定義されている定数の 「DES_CBC_PKCS5」を指定することでも、同様の暗号化アルゴリズムが指定できます。
スポンサード リンク
(1)暗号化アルゴリズム
名前 |
説明 |
ENCRYPT_DES |
DES |
ENCRYPT_3DES_2KEY |
トリプルDES。2つのキーを使用してDESを3回処理します。 |
ENCRYPT_3DES |
トリプルDES。DESを3回処理します。 |
ENCRYPT_AES128 |
AES。128ビットのキーを使用します。 |
ENCRYPT_AES192 |
AES。192ビットのキーを使用します。 |
ENCRYPT_AES256 |
AES。256ビットのキーを使用します。 |
ENCRYPT_RC4 |
個々のセッション単位でランダムに生成される秘密鍵を使用します。 |
(2)ブロック暗号連鎖
名前 |
説明 |
CHAIN_ECB |
ECBで暗号化します。 |
CHAIN_CBC |
CBCで暗号化します。 |
CHAIN_CFB |
CFBで暗号化します。 |
CHAIN_OFB |
OFBで暗号化します。 |
(3)ブロック暗号パディング
名前 |
説明 |
PAD_PKCS5 |
PKCSでパディングします。 |
PAD_NONE |
パディングを実行しないオプションです。 |
PAD_ZERO |
0(ゼロ)をパディングします。 |
(4)暗号化定義のセット
名前 |
説明 |
DES_CBC_PKCS5 |
ENCRYPT_DES + CHAIN_CBC + PAD_PKCS5 |
DES3_CBC_PKCS5 |
ENCRYPT_3DES + CHAIN_CBC + PAD_PKCS5 |
例1) 引数で渡された文字列を暗号化したRAW型データを返します。( ストアドファンクション )
|
create or replace function get_encrypt_data(in_string in varchar2) return raw as
-- SJISコード文字列「in_string」をRAW型に変換する。 in_data raw(128) := utl_i18n.string_to_raw(in_string, 'ja16sjis'); -- ASCIIコード暗号化キー文字列「ENCRYPT_KEY」をRAW型に変換する。 key_data raw(128) := utl_i18n.string_to_raw('ENCRYPT_KEY', 'us7ascii'); encrypted_data raw(128);
begin
encrypted_data := dbms_crypto.encrypt( src => in_data, typ => dbms_crypto.des_cbc_pkcs5, key => key_data ); return encrypted_data;
end;
|
このファンクションで使用した暗号化アルゴリズム「dbms_crypto.des_cbc_pkcs5」は以下になります。
暗号化アルゴリズム : DES
パディング方式 : PKC5手法でパディング
ブロック暗号連鎖モード : CCBを用いて暗号化
スポンサード リンク
|
|
|
|
|