HASH  
説明

可変長の文字列を、"fingerprint" として機能可能な固定長の文字列、または元の文字列に固有の識別子に変換します。ハッシュの結果をソースの文字列に逆変換することはできません。

 
戻り値

文字列

 
カテゴリ

変換関数、セキュリティ関数、文字列関数

 
関数のシンタックス
Hash(string[, algorithm[, encoding]] )
 
ヒストリ

ColdFusion MX 7: algorithm パラメータと encoding パラメータが追加されました。

 
パラメータ

 
使用方法

この関数の結果は比較や検証を行うときに役立ちます。たとえば、パスワードを露出せずにパスワードのハッシュを保管することができます。また、入力されたパスワードをハッシュし、その結果をデータベース内のハッシュされたパスワードと比較して、パスワードの有効性を確認できます。

ColdFusion MX 7 では、JCE (Java Cryptography Extension) を使用し、Sun JCE デフォルトセキュリティプロバイダを含む Sun Java 1.4.2 ランタイムがインストールされます。このプロバイダには、前の「パラメータ」に示したアルゴリズムが含まれています。JCE フレームワークには、他のプロバイダを実装するための機能も含まれています。ただし、当社ではサードパーティのセキュリティプロバイダに対するテクニカルサポートは提供していません。

encoding 属性は、通常は必須ではありません。この属性は、デフォルトのエンコードが異なるシステムで同じハッシュ値を生成するためのメカニズムを提供します。"neo-runtime.xml" ファイルの defaultCharset エントリを変更しない限り、ColdFusion では UTF-8 がデフォルトのエンコードとして使用されます。

 

次の例では、パスワードを入力し、そのハッシュされたパスワードを、cfdocexamples データベースの SecureData テーブルに保存されているハッシュ値と比較します。このテーブルには、次の 3 つのエントリがあります。

   
12
abc
14
def
15
ghi

<h3>Hash の例</h3>

<!--- フォームが送信された場合、次の処理を実行します。 --->
<cfif IsDefined("Form.UserID")>

   <!--- データベースにクエリーします。 ---> 
   <cfquery name = "CheckPerson" datasource = "cfdocexamples">
      SELECT PasswordHash
      FROM SecureData
      WHERE UserID = <cfqueryparam value = "#Form.userID#"
         cfsqltype = "CF_SQL_CHARVAR"> 
   </cfquery>

   <!--- PasswordHash クエリーフィールドおよびハッシュされたフォームパスワードを比較し、
         結果を表示します。 --->
   <cfoutput>
      <cfif Hash(Form.password, "SHA") が checkperson.passwordHash と異なります。>
         ユーザー ID #Form.userID# またはパスワードが無効です。もう一度試してください。
      <cfelse>
         パスワードがユーザー ID #Form.userID# に対して有効です。
      </cfif>
   </cfoutput>
</cfif>

<!--- 入力する ID とパスワードの形式 --->
<form action="#CGI.SCRIPT_NAME#" method="post">
   <b>ユーザー ID:</b>
   <input type = "text" name="UserID" ><br>
   <b>パスワード :</b>
   <input type = "text" name="password" ><br><br>
   <input type = "Submit" value = "文字列を暗号化">
</form>
STRING  
ハッシュ対象の文字列です。
ALGORITHM  
(オプション) 文字列をハッシュするために使用するアルゴリズムです。ColdFusion MX では、次 のアルゴリズムを使用する暗号ライブラリがインストールされます。
  • CFMX_COMPAT: ColdFuion MX および ColdFusion MX 6.1 (デフォルト) で生成されるものと同じハッシュ文字列を生成します。
  • MD5: (デフォルト) MD5 アルゴリズムを使用して、32 文字の 16 進数文字列を生成します。これは ColdFusion MX およびそれ以前のリリースで使用されるアルゴリズムです。
  • SHA: NIST (Nation Institute of Standards and Technology: 米国標準技術局) FIPS-180-2 で定義された Secure Hash Standard の SHA-1 アルゴリズムを使用して、28 文字の文字列を生成します。
  • SHA-256: FIPS-180-2 で定義された SHA-256 アルゴリズムを使用して、44 文字の文字列を生成します。
  • SHA-384: FIPS-180-2 で定義された SHA-384 アルゴリズムを使用して、64 文字の文字列を生成します。
  • SHA-512: FIPS-180-2 で定義された SHA-1 アルゴリズムを使用して、88 文字の文字列を生成します。
これら以外の暗号アルゴリズムを使用するセキュリティプロバイダをインストールした場合は、そ のハッシュアルゴリズムを指定することもできます。
ENCODING  
(オプション) この属性を使用する場合は、algorithm パラメータも指定する必要があります。こ れは、文字列をハッシュアルゴリズムで使用されるバイトデータに変換するためのエンコードを指 定する文字列です。Java ランタイムで認識される文字エンコード名でなければなりません。デ フォルト値は、"neo-runtime.xml" ファイルの defaultCharset エントリで指定された値で、通常は UTF-8 です。この属性は、CFMX_COMPAT アルゴリズムを使用する場合は無視されます。