Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 関数 » SQL 関数 (E ~ O)

 

HASH 関数 [文字列]

指定された値をハッシュ形式で返します。

構文
HASH( string-expression[, algorithm ] )
パラメータ
  • string-expression   ハッシュされる文字列。大文字と小文字を区別しないデータベース定義であっても、パラメータの大文字と小文字は区別されます。

  • algorithm   ハッシュに使用するアルゴリズム。可能な値には MD5、SHA1、SHA1_FIPS、SHA256、SHA256_FIPS があります。デフォルトでは、MD5 アルゴリズムが使用されます。

    注意

    FIPS アルゴリズムは、Certicom の FIPS 140-2 基準を満たしたソフトウェアを使用するシステムでのみ使用されます。

戻り値

VARCHAR

備考

ハッシュを使用すると、値は、関数に渡されたそれぞれの値に対してユニークなバイト・シーケンスに変換されます。

サーバを -fips オプションを使用して起動すると、使用されるアルゴリズムや動作は次のように異なる可能性があります。

  • SHA1 を指定する場合、SHA1_FIPS が使用されます。

  • SHA256 を指定する場合、SHA256_FIPS が使用されます。

  • MD5 を指定する場合、エラーが返されます。

使用するアルゴリズムごとに返される型を次に示します。

警告

すべてのアルゴリズムは一方向のハッシュです。ハッシュから元の文字列を再作成することはできません。

参照
標準と互換性
  • SQL/2003   ベンダ拡張。

次の例は、ユーザ 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' ) );