Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
指定された値をハッシュ形式で返します。
HASH( string-expression[, algorithm ] )
string-expression ハッシュされる文字列。大文字と小文字を区別しないデータベース定義であっても、パラメータの大文字と小文字は区別されます。
algorithm ハッシュに使用するアルゴリズム。使用できる値は、次のとおりです。CRC32、MD5、SHA1、SHA1_FIPS、SHA256、SHA256_FIPS。デフォルトでは、MD5 アルゴリズムが使用されます。FIPS 認定のアルゴリズムには別のライセンスが必要です。
使用するアルゴリズムごとに返される型を次に示します。
CRC32 は 16 進数文字列を返します。16 進数文字列を 32 ビット整数に変換するには、HEXTOINT 関数を使用します。
MD5 は VARCHAR(32) を返します
SHA1 は VARCHAR(40) を返します
SHA1_FIPS は VARCHAR(40) を返します
SHA256 は VARCHAR(64) を返します
SHA256_FIPS は VARCHAR(64) を返します
ハッシュを使用すると、値は、関数に渡されたそれぞれの値に対してユニークなバイトシーケンスに変換されます。
データベースサーバを -fips オプションを使用して起動すると、使用されるアルゴリズムや動作が次のように異なる場合があります。
SHA1 を指定する場合、SHA1_FIPS が使用されます。
SHA256 を指定する場合、SHA256_FIPS が使用されます。
MD5 を指定する場合、エラーが返されます。
FIPS 認定ではない CRC32 アルゴリズムは暗号化アルゴリズムとして認識されないため、FIPS で使用できます。
すべてのアルゴリズムは一方向のハッシュです。ハッシュから元の文字列を再作成することはできません。
SQL/2008 ベンダー拡張。
次の例は、ユーザ ID やパスワードなど、アプリケーションのユーザに関する情報を格納するテーブル user_info を作成します。テーブルにはローが 1 つ挿入されます。パスワードは、HASH 関数と SHA256 アルゴリズムを使用してハッシュされます。この方法でハッシュ済みパスワードを格納する方法は、クリアテキストでパスワードを格納せず、パスワードの比較を必要とする外部アプリケーションがある場合に有効です。
CREATE TABLE user_info ( employee_id INTEGER NOT NULL PRIMARY KEY, user_name CHAR(80), user_pwd CHAR(80) ); INSERT INTO user_info VALUES ( '1', 's_phillips', HASH( 'mypass', 'SHA256' ) );