Hash

説明

可変長の文字列を、「フィンガープリント」として機能できる固定長の文字列、つまり元の文字列の識別子に変換します。ハッシュの結果をソースの文字列に逆変換することはできません。

戻り値

文字列です。

カテゴリ

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

関数のシンタックス

Hash(string [, algorithm [, encoding] [, iterations ]])

履歴

  • ColdFusion(2023 リリース)アップデート 8 および ColdFusion(2021 リリース)アップデート 14:デフォルトのアルゴリズムが CFMX_COMPAT から SHA-256 に変更されました。
  • ColdFusion MX 7:algorithm パラメーターと encoding パラメーターが追加されました。
  • ColdFusion 10:iterations 引数が追加されました。

パラメーター

パラメーター

説明

string

ハッシュする文字列です。

algorithm

(オプション)文字列のハッシュ処理に使用するアルゴリズムです。ColdFusion では、次のアルゴリズムを使用する暗号ライブラリがインストールされます。

  • CFMX_COMPAT:ColdFusion MX および ColdFusion MX 6.1 で生成されるものと同じハッシュ文字列を生成します(デフォルト)。これは単なるプレースホルダーのアルゴリズムで、ユーザーが algorithm に指定するオプションを持っていない場合に、CFMX と互換性があるアルゴリズムを使用することを ColdFusion に通知するものです。
  • MD5:(デフォルト)MD5 アルゴリズムを使用して、32 文字の 16 進数文字列を生成します。これは ColdFusion MX およびそれ以前のリリースで使用されるアルゴリズムです。
  • SHA:NIST(Nation Institute of Standards and Technology:米国標準技術局)FIPS-180-2 で定義された Secure Hash Standard の SHA-1 アルゴリズムを使用して、40 文字の文字列を生成します。
  • SHA-256:FIPS-180-2 で定義された SHA-256 アルゴリズムを使用して、64 文字の文字列を生成します。
  • SHA-384:FIPS-180-2 で定義された SHA-384 アルゴリズムを使用して、96 文字の文字列を生成します。
  • SHA-512:FIPS-180-2 で定義された SHA-512 アルゴリズムを使用して、128 文字の文字列を生成します。

 

エンタープライズ版の ColdFusion では、RSA BSafe Crypto-J ライブラリがインストールされます。このライブラリを使用すると、FIPS-140 に準拠した強力な暗号化を利用できます。このライブラリでは、次のアルゴリズムを使用できます。

  • MD2:RFC 1319 で定義された MD2 ハッシュアルゴリズムです。
  • MD5:RFC 1321 で定義されたアルゴリズムです。
  • RIPEMD160:RACE Integrity Primitives Evaluation Message Digest 160 ビットメッセージダイジェストアルゴリズムおよび暗号化ハッシュ機能です。
  • SHA-1:FIPS 180-2 および FIPS 198 で定義された 160 ビットセキュアハッシュアルゴリズムです。
  • SHA-224:FIPS 180-2 および FIPS 198 で定義された 224 ビットセキュアハッシュアルゴリズムです。
  • SHA-256:FIPS 180-2 および FIPS 198 で定義された 256 ビットセキュアハッシュアルゴリズムです。
  • SHA-384:FIPS 180-2 および FIPS 198 で定義された 384 ビットセキュアハッシュアルゴリズムです。
  • SHA-512:FIPS 180-2 および FIPS 198 で定義された 512 ビットセキュアハッシュアルゴリズムです。
    これら以外の暗号アルゴリズムを使用するセキュリティプロバイダーをインストールした場合は、そのハッシュアルゴリズムを指定することもできます。

エンコード

(オプション)この属性を使用する場合は、algorithm パラメーターも指定します。これは、文字列をハッシュアルゴリズムで使用されるバイトデータに変換するためのエンコードを指定する文字列です。Java ランタイムで認識される文字エンコード名でなければなりません。デフォルト値は、neo-runtime.xml ファイルの defaultCharset エントリで指定された値で、通常は UTF-8 です。CFMX_COMPAT アルゴリズムを使用する場合は無視されます。

iterations

(オプション)ハッシュ計算時間を増やすためにハッシュ処理を繰り返す回数です。CF10 以上に適用されます。

ColdFusion では、指定された値をハッシュした後で反復回数を考慮します。したがって、このパラメーターは反復回数+ 1 となります。追加繰り返し回数のデフォルトは 0 です。

使用方法

この関数の結果は比較や検証を行うときに役立ちます。例えば、パスワードを露出させずにパスワードのハッシュをデータベースに保存することができます。また、入力されたパスワードをハッシュし、その結果をデータベース内のハッシュされたパスワードと比較して、パスワードの有効性を確認できます。ColdFusion では、JCE(Java Cryptography Extension)を使用し、Sun JCE デフォルトセキュリティプロバイダーを含む Sun Java ランタイムがインストールされます。このプロバイダーには、「パラメーター」節で示したアルゴリズムが含まれています。JCE フレームワークには、他のプロバイダーの実装を使用するための機能も含まれています。ただし、アドビでは、サードパーティのセキュリティプロバイダーに対するテクニカルサポートは提供していません。encoding 属性は、通常は必須ではありません。この属性は、デフォルトのエンコードが異なるシステムで同じハッシュ値を生成するためのメカニズムを提供します。neo-runtime.xml ファイルの defaultCharset エントリを変更しない限り、ColdFusion では UTF-8 がデフォルトのエンコードとして使用されます。

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

ユーザー ID

パスワード

blaw

blaw

dknob

dknob

<cfscript>
    // SHA-256 の例
    writeOutput(hash(&quot;an important string&quot;, &quot;SHA-256&quot;, &quot;UTF-8&quot;)) 
    // 4825D8AB22800A9BE09986366D6430CA8E704323E4470608AC303A9F1C05626F
    // SHA-512 の例
    writeOutput(hash(&quot;an important string&quot;, &quot;SHA-512&quot;, &quot;UTF-8&quot;)) 
    //06B24506B66BA5DA743CC8E2F67977C212379FCE7FF8F3BB99AC7A2A0C053D595B1A4077E9C9346453A95067BCED38338920DF8CC85F4ED3313A7039D37DFCD7
</cfscript>

出力

4825D8AB22800A9BE09986366D6430CA8E704323E4470608AC303A9F1C05626F06B24506B66BA5DA743CC8E2F67977C212379FCE7FF8F3BB99AC7A2A0C053D595B1A4077E9C9346453A95067BCED38338920DF8CC85F4ED3313A7039D37DFCD7

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2025

Adobe MAX Japan
クリエイターの祭典

2025 年 2 月 13 日
東京ビッグサイト