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 値を使用します。
      SET ENCRYPTION PASSWORD = :pw
    
      INSERT INTO EMP1 (SSN) VALUES ENCRYPT_RC2( '289-46-8832' )
    
      SELECT DECRYPT_CHAR( SSN)
        FROM EMP1
    DECRYPT_CHAR 関数は、元の値「289-46-8832」を戻します。
  • この例では、変数 pw にセットされた暗号化パスワードを明示的に受け渡しします。
      INSERT INTO EMP1 (SSN) VALUES ENCRYPT_TDES( '289-46-8832', :pw)
    
      SELECT DECRYPT_CHAR( SSN, :pw)
        FROM EMP1
    DECRYPT_CHAR 関数は、元の値「289-46-8832」を戻します。