hash() 関数

hash() 関数は、選択したアルゴリズムに応じて、入力データの 128 ビット・ハッシュ、160 ビット・ハッシュ、または 256 ビット・ハッシュを返します。

この関数は、2128 ~ 2256 の戻り値域を提供し、暗号化の目的での使用を意図しています。 この関数が、2 つの異なる入力に対して同じ出力を生成することはほとんどありません。

hash() 関数を使用する前に、以下の動作に注意してください。
  • 通常、hash() 関数は、hash4() 関数や hash8() 関数より計算時間がかなり長くなります。 また、hash() 関数は、16 バイトから 32 バイトのバイナリー varchar 値を返します。バイナリー varchar 値の比較は、整数値の比較よりも時間がかかるので、照会の実行時間が長くなります。 ハッシュ生成と比較の処理でスピードが必要な場合や、単純な片方向のルックアップ関数で事が足りる場合は、hash() 関数の代わりに hash4() 関数や hash8() 関数を使用してください。
  • hash()関数のハッシュ値を持つカラムはゾーンマッピングできず、他のNetezza Performance Serverのクエリパフォーマンステクニックは使用できません。

構文

hash() 関数の構文は次のとおりです。
varchar = hash(varchar data [, int algorithm]);
nvarchar = hash(nvarchar data [, int algorithm]);

data の値には、ハッシュする varchar 値または nvarchar 値を指定します。

algorithm値は整数コードで、デフォルトは0である。 利用可能なアルゴリズムと結果のハッシュ値のサイズを以下の表に示す:

表 1. 暗号化ハッシュでサポートされるアルゴリズム
コード 説明 結果
0 MD5 128 ビット・ハッシュ
1 SHA-1 160 ビット・ハッシュ
2 SHA-2 256 ビット・ハッシュ

MD5 アルゴリズムと Secure Hash Algorithm (SHA) は、MD4 から派生したメッセージ・ダイジェスト・アルゴリズムです。 SHA のハッシュ関数は、National Security Agency (NSA) が強力な暗号化ハッシュ機能を提供するために開発したものです。

重要:nvarchar値を処理するには、'hash()関数ではなく、'hash_nvarchar()関数を使うべきである。 hash_nvarchar() 関数は、入力 nvarchar データに対して varchar 値を返します。 hash() 関数は以前のバージョンおよび結果との互換性のために残っていますが、hash('NVARCHAR') 関数値を格納する表およびビューで、ロード中または GENERATE STATISTICS 操作中に問題が発生する可能性があります。

戻り

この関数はデータのハッシュ値を返します。 戻りの型は、16 バイトから 32 バイトのバイナリー varchar 値です。

select hash('Netezza',0);
       HASH
------------------
Ã
®dïO=±NEÂ
ÂÂÃ
(1 row)