DECRYPT_BIT、
DECRYPT_BINARY、
DECRYPT_CHAR、および DECRYPT_DB
DECRYPT_BIT、DECRYPT_BINARY、 DECRYPT_CHAR、および DECRYPT_DB 関数は、暗号化されたデータを暗号化解除した結果の値を戻します。 暗号化解除に使用されるパスワードは、パスワード・ストリング 値か、 SET ENCRYPTION PASSWORD ステートメントで割り当てられる ENCRYPTION PASSWORD 値 です。
>>-+-DECRYPT_BIT----+--(--encrypted-data--+----------------------------------------+--)->< +-DECRYPT_BINARY-+ '-,--+-password-string-+--+------------+-' +-DECRYPT_CHAR---+ '-DEFAULT---------' '-,--integer-' '-DECRYPT_DB-----'
暗号化解除関数で暗号化解除できる値は、ENCRYPT_AES、ENCRYPT_RC2、または ENCRYPT_TDES 関数を使用して暗号化された値だけです。
- encrypted-data
- CHAR FOR BIT DATA、VARCHAR FOR BIT DATA、BINARY、 VARBINARY、または BLOB 組み込みデータ・タイプの完全な暗号化されたデータ値を戻すストリング式。 データ・ストリングは、ENCRYPT_AES、ENCRYPT_RC2、または ENCRYPT_TDES 関数を使用して暗号化しておく必要があります。
- password-string
- 6 バイト以上 127 バイト以下の文字ストリング値を戻す式。 この式は CLOB であってはなりません。 この式は、データの暗号化に使用されたものと同じパスワード でなければならず、そうでなければ、暗号化解除の結果は、暗号化された元の値と異なるものに なります。パスワード引数の値が NULL であるか、値を指定しない場合は、 データは ENCRYPTION PASSWORD 値を使用して暗号化解除されます。 この値は、SET ENCRYPTION PASSWORD ステートメントを使用して設定しておく必要があります。
- DEFAULT
- データは ENCRYPTION PASSWORD 値を使用して暗号化解除されます。 この値は、SET ENCRYPTION PASSWORD ステートメントを使用して設定しておく必要があります。
- integer
- 結果の CCSID を指定する整数定数。
DECRYPT_BIT または DECRYPT_BINARY を指定する場合は、3 番目の引数を指定してはなりません。
DECRYPT_CHAR を指定する場合は、整数 は有効な SBCS CCSID または混合データ CCSID とする必要があります。 65535 (ビット・データ) であってはなりません。 3 番目の引数が SBCS CCSID の場合は、結果は SBCS データになります。 3 番目の引数が混合 CCSID の場合は、結果は混合データになります。 3 番目の引数が指定されていない場合は、結果の CCSID は現行サーバーのデフォルト CCSID になります。
DECRYPT_DB を指定する場合は、整数 は有効な DBCS CCSID とする必要があります。 3 番目の引数が指定されていない場合は、 結果の CCSID は現行サーバーのデフォルト CCSID に関連付けられた DBCS CCSID になります。
結果のデータ・タイプは、以下の表に示すとおり、 指定された関数と最初の引数のデータ・タイプによって決まります。 暗号化されたデータの実際のタイプから関数の結果へのキャストがサポートされない場合は、 警告またはエラーが戻されます。
関数 | 最初の引数のデータ・タイプ | 暗号化されたデータの実際のデータ・タイプ | 結果 |
---|---|---|---|
DECRYPT_BIT | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | 文字ストリング | VARCHAR FOR BIT DATA |
DECRYPT_BIT | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | グラフィック・ストリング | エラーまたは警告 ** |
DECRYPT_BIT | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | 2 進ストリング | エラーまたは警告 ** |
DECRYPT_BIT | BLOB | 任意のストリング | エラー |
DECRYPT_BINARY | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | 任意のストリング | VARBINARY |
DECRYPT_BINARY | BLOB | 任意のストリング | BLOB |
DECRYPT_CHAR | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | 文字ストリング | VARCHAR |
DECRYPT_CHAR | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | Unicode グラフィック・ストリング | VARCHAR |
DECRYPT_CHAR | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | 非 Unicode グラフィック・ストリング | エラーまたは警告 ** |
DECRYPT_CHAR | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | 2 進ストリング | エラーまたは警告 ** |
DECRYPT_CHAR | BLOB | 文字ストリング | CLOB |
DECRYPT_CHAR | BLOB | Unicode グラフィック・ストリング | CLOB |
DECRYPT_CHAR | BLOB | 非 Unicode グラフィック・ストリング | エラーまたは警告 ** |
DECRYPT_CHAR | BLOB | 2 進ストリング | エラーまたは警告 ** |
DECRYPT_DB | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | UTF-8 文字ストリングまたはグラフィック・ストリング | VARGRAPHIC |
DECRYPT_DB | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | 非 UTF-8 文字ストリング | エラーまたは警告 ** |
DECRYPT_DB | CHAR FOR BIT DATA、 VARCHAR FOR BIT DATA、BINARY、または VARBINARY | 2 進ストリング | エラーまたは警告 ** |
DECRYPT_DB | BLOB | UTF-8 文字ストリングまたはグラフィック・ストリング | DBCLOB |
DECRYPT_DB | BLOB | 非 UTF-8 文字ストリング | エラーまたは警告 ** |
DECRYPT_DB | BLOB | 2 進ストリング | エラーまたは警告 ** |
注:
** 暗号化解除関数が外側の副選択の選択リストに存在する場合は、 データ・マッピング警告が戻されます。 存在しない場合は、エラーが戻されます。 データ・マッピング警告についての詳細は、割り当ておよび比較を参照してください。 |
暗号化されたデータ にヒントが組み込まれている場合は、 関数によってヒントが戻されることはありません。 結果の長さ属性は、暗号化されたデータ より 8 バイト小さいデータ・タイプの長さ属性になります。 結果の実際の長さは、暗号化された元のストリングの長さです。 暗号化されたデータ に暗号化されたストリングを超えるバイトが組み込まれている場合は、 関数によってこれらのバイトが戻されることはありません。
引数が NULL になる可能性がある場合は、結果も NULL になる可能性があります。 引数が NULL の場合は、結果は NULL 値になります。
最初に暗号化された値とは異なる CCSID を使用してデータを暗号化解除すると、 暗号化解除された値をこの CCSID に変換するときにバイト数の拡張が生じる場合があります。 このような場合は、 暗号化されたデータ をバイト数のより大きい可変長ストリングにキャストする必要があります。
注記
パスワード保護: 暗号化パスワードへの不用意なアクセスを避けるため、 プログラム、プロシージャー、または関数のソースに パスワード・ストリング をストリング定数として指定しないでください。 代わりに、ENCRYPTION PASSWORD 特殊レジスターまたはホスト変数を使用してください。
リモート・リレーショナル・データベースに接続しているとき、 指定されたパスワード自体は「平文で」送信されます。 つまり、パスワード自体は暗号化されません。 このようなケースでパスワードを保護するには、 IPSEC (または IBM® i 製品同士の接続の場合は SSL) などの通信暗号化メカニズムを使用することを考慮してください。
代替構文: 旧バージョンの DB2® との互換性を確保するために、 DECRYPT_BIT の代わりに DECRYPT_BIN を指定することもできます。
例
- 表 EMP1 に SSN という社会保障の列があると想定します。
この例では、暗号化パスワードを保持するために ENCRYPTION PASSWORD 値を使用します。
DECRYPT_CHAR 関数は、元の値「289-46-8832」を戻します。SET ENCRYPTION PASSWORD = :pw INSERT INTO EMP1 (SSN) VALUES ENCRYPT_RC2( '289-46-8832' ) SELECT DECRYPT_CHAR( SSN) FROM EMP1
- この例では、変数 pw にセットされた暗号化パスワードを明示的に受け渡しします。
DECRYPT_CHAR 関数は、元の値「289-46-8832」を戻します。INSERT INTO EMP1 (SSN) VALUES ENCRYPT_TDES( '289-46-8832', :pw) SELECT DECRYPT_CHAR( SSN, :pw) FROM EMP1