可変長の文字列を、"fingerprint" として機能可能な固定長の文字列、または元の文字列に固有の識別子に変換します。ハッシュの結果をソースの文字列に逆変換することはできません。
文字列
Hash(string[,algorithm[,encoding]] )
ColdFusion MX 7: algorithm パラメータと encoding パラメータが追加されました。
| パラメータ | 説明 |
|---|---|
|
string |
ハッシュ対象の文字列です。 |
|
algorithm |
(オプション) 文字列をハッシュするために使用するアルゴリズムです。ColdFusion MX では、次のアルゴリズムを使用する暗号ライブラリがインストールされます。
これら以外の暗号アルゴリズムを使用するセキュリティプロバイダをインストールした場合は、そのハッシュアルゴリズムを指定することもできます。 |
|
encoding |
(オプション) この属性を使用する場合は、algorithm パラメータも指定する必要があります。これは、文字列をハッシュアルゴリズムで使用されるバイトデータに変換するためのエンコードを指定する文字列です。Java ランタイムで認識される文字エンコード名でなければなりません。デフォルト値は、"neo-runtime.xml" ファイルの defaultCharset エントリで指定された値で、通常は UTF-8 です。この属性は、CFMX_COMPAT アルゴリズムを使用する場合は無視されます。 |
この関数の結果は比較や検証を行うときに役立ちます。たとえば、パスワードを露出せずにパスワードのハッシュを保管することができます。また、入力されたパスワードをハッシュし、その結果をデータベース内のハッシュされたパスワードと比較して、パスワードの有効性を確認できます。
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 つのエントリがあります。
| ユーザー ID | パスワード |
|---|---|
|
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>
ColdFusion MX 7 | ColdFusion MX 6.1 | ColdFusion MX* | ColdFusion 5* | フォーラム* | デベロッパーセンター | サポート情報 | バグ報告
バージョン7