HASH スカラー関数

HASH 関数は、指定されたアルゴリズムを最初の引数に適用した結果として、可変長の値を戻します。 この関数は、暗号化のためのものです。

ヒント: H ASH関数のアルゴリズムパラメータとして0( 変更の開始MD5 )および1( SHA1 )を使用することは非推奨です。これらは量子耐性がないとみなされる暗号化アルゴリズムを使用しているためです。 最良の結果を得るには、スカラー関数を使用してください。 詳細については、 HASH_algorithm スカラー関数を参照してください。変更の終わり
構文図を読むビジュアルシンタックスダイアグラムをスキップするHASH( 式,0,アルゴリズム)

スキーマは SYSIBM です。

expression
ハッシュの対象となるストリング値を表す式。 この式は、組み込みの文字ストリング、グラフィック・ストリング、またはバイナリー・ストリングを戻す必要があります。
アルゴリズム
関数名が HASH である場合に使用されるハッシュ・アルゴリズムを示す、0、1、または 2 の整数定数値。 アルゴリズムを指定しない場合は、MD5 アルゴリズムを示すデフォルト値 0 が使用されます。

結果は、ハッシュ・アルゴリズム algorithmexpression に適用することによって生成されます。

関数の結果は VARBINARY であり、結果の長さ属性は、使用されるハッシュ・アルゴリズムによって異なります。 結果の特性を以下の表にまとめます。

表 1. 各アルゴリズムの結果の特性
アルゴリズム アルゴリズム・パラメータの値 結果のサイズ 返される可能性がある異なる値の数 HASH 関数の結果のデータ・タイプ
MD5 (非推奨) 0 128 ビット 2128 VARBINARY(16)
SHA1 (非推奨) 1 160 ビット 2160 VARBINARY(20)
SHA256 2 256 ビット 2256 VARBINARY(32)

最初の引数が NULL になる可能性がある場合、結果も NULL になる可能性があります。 最初の引数が NULL の場合には、結果も NULL 値です。

廃止予定の暗号化および復号化関数
以下の暗号化または復号化用の組み込みスカラー関数は、使用されている暗号化アルゴリズムが量子安全と見なされないため、非推奨です。 それらは引き続きサポートされますが、その使用は推奨されなくなり 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
SHA1 および MD5 アルゴリズムのセキュリティ上の考慮事項
SHA1 と MD5 のどちらのアルゴリズムでもセキュリティーの欠陥が見つかっています。 コンプライアンスに関する関連資料 (National Institute of Standards and Technology (NIST) Special Publication 800-131A など) で、使用できるハッシュ・アルゴリズムを確認してください。
代替構文
HASH 関数は、ハッシュ・アルゴリズムが関数名の一部として指定されている他のハッシュ関数と似ています。 以下に例を示します。
HASH_SHA256 (  expression  )

アプリケーションの移植性を高めるために、ハッシュのために HASH 関数を呼び出すことをお勧めします。

  • MD5 アルゴリズムを使用してハッシュ値を生成するには、HASH関数を呼び出します。

    SELECT HEX(HASH(’ABCDEFGHIJKLMNOPQRZTUVWXYZ’ , 0 )) 
    FROM SYSIBM.SYSDUMMYU; 

    以下の値が返されます。

    X’E433BC7BE26A152E54E2EA0C92778160’
  • HASH_SHA1 関数を呼び出して、SHA1 アルゴリズムを使用してハッシュ値を生成します。

    SELECT HEX(HASH(’ABCDEFGHIJKLMNOPQRZTUVWXYZ’, 1 )) 
    FROM SYSIBM.SYSDUMMYU; 

    以下の値が返されます。

    X’8F34563A0FA4BA1A285C8035935D010629385474’
  • HASH_SHA256 関数を呼び出して、SHA256 アルゴリズムを使用してハッシュ値を生成します。

    SELECT HEX(HASH(’ABCDEFGHIJKLMNOPQRZTUVWXYZ’ , 2 )) 
    FROM SYSIBM.SYSDUMMYU;

    以下の値が返されます。

    X’403AC046B04F4A749E9810971083997B71F2B6FAF87CECCDE657E93FFCF700F0’