ENCRYPT_TDES または ENCRYPT スカラー関数(非推奨)

ENCRYPT_TDES 関数は、Triple-DES 暗号化アルゴリズムを使用して最初の引数を暗号化した結果の値を戻します。 この関数は、暗号化に使用するパスワードも設定できます。

ヒント: ENCRYPT_TDES 変更の開始または ENCRYPT スカラー関数は、使用されている暗号化アルゴリズムが量子耐性とは見なされないため、非推奨です。 最良の結果を得るには、代わりにENCRYPT_DATAKEYスカラー関数を使用してください。 詳細については、 ENCRYPT_DATAKEY スカラー関数を参照してください。変更の終わり

暗号化パスワードは、SET ENCRYPTION PASSWORD ステートメントを使用して割り当てられる ENCRYPTION PASSWORD 値を使用して設定することもできます。

構文図を読むビジュアルシンタックスダイアグラムをスキップするENCRYPT_TDES( データ文字列,パスワード文字列,ヒント文字列)

スキーマは SYSIBM です。

データ文字列
暗号化されるストリング値を戻す式。 このストリング式は、LOB 以外の、組み込みの文字ストリング・データ・タイプを戻す必要があります。 長さ属性は 0 (ゼロ) 以上にする必要があります。 長さ属性は、 hint-string を指定した場合は 32640、hint-string を指定しない場合は 32672 です。

引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。

パスワード文字列
最小 6 バイト、最大 127 バイトの CHAR 値または VARCHAR 値を戻す式。

引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。

この値は、data-string の暗号化に使用するパスワードを表します。 パスワード引数の値が NULL であるか、指定されない場合、データは ENCRYPTION PASSWORD 値を使用して暗号化解除されます。この値は SET ENCRYPTION PASSWORD ステートメントによって割り当てられている必要があります。

ヒント文字列
データ所有者がパスワードを思い出すための参考になる 32 バイトまでの CHAR または VARCHAR の値を戻す式 (例えば、「Pacific」を思い出すヒントとなる「Ocean」)。

引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。

ヒント値を指定した場合は、ヒントが結果に組み込まれ、GETHINT 関数を使用して取り戻すことができます。 この引数が NULL または指定されておらず、ENCRYPTION PASSWORD の設定時にヒントが指定されなかった場合、ヒントは結果に組み込まれません。 password-string を指定しない場合、ヒントは SET ENCRYPTION PASSWORD ステートメントを使用して指定できます。

結果のデータ・タイプは、次の表に示すように、最初の引数よって決まります。
表 1. ENCRYPT_TDES 関数の結果のデータ・タイプ
最初の引数のデータ・タイプ 結果のデータ・タイプ
BINARY、VARBINARY VARBINARY
CHAR、 VARCHAR、 GRAPHIC、 VARGRAPHIC VARCHAR FOR BIT DATA

結果のコード化スキームは、data-string のコード化スキームと同じです。 結果が文字データの場合、結果はビット・データです。

結果の長さ属性は、hint-string を指定したかどうかによって異なります。

  • hint-string が指定されている場合、結果の長さ属性は、暗号化されていないデータの長さ属性 + 24 バイト + 次の 8 バイト境界までのバイト数 + ヒントの 32 バイトです。
  • hint-string が指定されていない場合、結果の長さ属性は、暗号化されていないデータの長さ属性 + 24 バイト + 次の 8 バイト境界までのバイト数になります。

結果は NULL になる可能性があります。第 1 引数が NULL の場合、結果は NULL 値となります。

暗号化された結果が data-string 値より長くなっています。 このため、暗号化された値を割り当てるときには、暗号化された値全体を格納できる長さを指定してターゲットが宣言されていることを確認してください。

廃止予定の暗号化および復号化関数
以下の暗号化または復号化用の組み込みスカラー関数は、使用されている暗号化アルゴリズムが量子安全と見なされないため、非推奨です。 それらは引き続きサポートされますが、その使用は推奨されなくなり Db2 13、代わりに量子耐性アルゴリズムを使用する代替手段を採用すべきです。 詳細については、 Db2 13 の非推奨関数をご覧ください。
  • ENCRYPT_TDES または ENCRYPT
  • アルゴリズム 0( MD5 )または1( SHA1 )を用いたハッシュ
  • HASH_CRC32
  • HASH_MD5
  • HASH_SHA1
  • DECRYPT_BINARY
  • DECRYPT_BIT
  • DECRYPT_CHAR
  • DECRYPT_DB
データ暗号化に関する考慮事項:
パスワード保護
誤って暗号化パスワードにアクセスしないようにするには、プログラム、プロシージャー、または関数のソースで password-string をストリング定数として指定しないでください。 代わりに、SET ENCRYPTION PASSWORD ステートメントまたは変数を使用してください。
暗号化アルゴリズム:
使用される内部暗号化アルゴリズムは、埋め込み付きの Triple DES 暗号化ブロック・チェーン (CBC) です。 MD5 ハッシュを使用して、パスワードから 128 ビット秘密鍵が得られます。
暗号化パスワードおよびデータ
パスワード管理は、お客様の責任で行ってください。 データが暗号化された後、そのデータの暗号化解除に使用できるパスワードは、暗号化に使用されたパスワードのみです。 データの暗号化に使用されたものと異なるパスワードを使用すると、暗号化解除の結果は元のストリングと一致せず、 エラーや警告は戻されません。 パスワード値を設定するために CHAR 変数を使用した場合、変数にはブランクが埋め込まれる可能性があります。 暗号化された結果には、NULL 終了文字などの印刷不能文字が含まれている可能性があります。
テーブル列定義
暗号化されたデータを含む列およびタイプを定義する場合は、常に以下のように長さ属性を計算してください。
  • 暗号化されるデータにヒントを組み込む場合、列の長さは暗号化されていないデータの長さ属性 + 24 バイト + 次の 8 バイト境界までのバイト数 + ヒント用の 32 バイト。
  • 暗号化されるデータにヒントを組み込まない場合、列の長さは暗号化されていないデータの長さ属性 + 24 バイト + 次の 8 バイト境界までのバイト数。
次に、ヒントが組み込まれていないと想定して、列の長さを計算する例を示します。
Maximum length of non-encrypted data           6 bytes
24 bytes for encryption key                   24 bytes
Number of bytes to the next 8 byte boundary    2 bytes
                                             ---------

Encrypted data column length                  32 bytes
Maximum length of non-encrypted data          32 bytes
24 bytes for encryption key                   24 bytes
Number of bytes to the next 8 byte boundary    0 bytes
                                             ---------

Encrypted data column length                  56 bytes
暗号化されたデータの管理
暗号化されたデータは、Triple DES 暗号化アルゴリズムを使用して暗号化されたデータの暗号化解除をサポートするサーバー上でのみ暗号化解除できます。 したがって、暗号化されたデータを持つ列のレプリケーションは、暗号化解除関数および同じ暗号化アルゴリズムをサポートするサーバーに対してのみ実行してください。
代替構文:
ENCRYPT は ENCRYPT_TDES の同義語です。 Db2 Db2 ファミリーの他の製品との互換性を確保するために、このキーワードをサポートしています。

例 1:
表に挿入される社会保障番号を暗号化します。 ENCRYPTION PASSWORD 値を「Ben123」に設定し、この値をパスワードとして使用します。
   SET ENCRYPTION PASSWORD ='Ben123';
   INSERT INTO EMP(SSN) VALUES ENCRYPT_TDES ('289-46-8832');
例 2:
表に挿入される社会保障番号を暗号化します。 暗号化パスワードとして「Ben123」を明示的に指定します。
INSERT INTO EMP(SSN) VALUES ENCRYPT_TDES ('289-46-8832','Ben123');
例 3
表に挿入される社会保障番号を暗号化します。 暗号化パスワードとして「Pacific」を指定し、ユーザーがパスワード「Pacific」を思い出すためのヒントとして「Ocean」を指定します。
INSERT INTO EMP(SSN) VALUES ENCRYPT_TDES ('289-46-8832','Pacific','Ocean');
前のステートメントは、近似値が 31.62 である倍精度の浮動小数点数を戻します。