HASH スカラー関数

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

構文図を読むビジュアルシンタックスダイアグラムをスキップする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 値です。

セキュリティーに関する考慮事項:
SHA1 と MD5 のどちらのアルゴリズムでもセキュリティーの欠陥が見つかっています。 コンプライアンスに関する関連資料 (National Institute of Standards and Technology (NIST) Special Publication 800-131A など) で、使用できるハッシュ・アルゴリズムを確認してください。
代替構文:
HASH 関数は、ハッシュ・アルゴリズムが関数名の一部として指定されている他のハッシュ関数と似ています。 以下に例を示します。
HASH_MD5  (  expression  )

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

例 1:
MD5 アルゴリズムを使用してハッシュ値を生成するには、HASH関数を呼び出します。
SELECT HEX(HASH(’ABCDEFGHIJKLMNOPQRZTUVWXYZ’ , 0 )) 
FROM SYSIBM.SYSDUMMYU; 

以下の値が返されます。

X’E433BC7BE26A152E54E2EA0C92778160’
例 2:
HASH_SHA1 関数を呼び出して、SHA1 アルゴリズムを使用してハッシュ値を生成します。
SELECT HEX(HASH(’ABCDEFGHIJKLMNOPQRZTUVWXYZ’, 1 )) 
FROM SYSIBM.SYSDUMMYU; 

以下の値が返されます。

X’8F34563A0FA4BA1A285C8035935D010629385474’
例 3:

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

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

以下の値が返されます。

X’403AC046B04F4A749E9810971083997B71F2B6FAF87CECCDE657E93FFCF700F0’