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 では、次のアルゴリズムを使用する暗号ライブラリがインストールされます。
|
|
エンタープライズ版の ColdFusion では、RSA BSafe Crypto-J ライブラリがインストールされます。このライブラリを使用すると、FIPS-140 に準拠した強力な暗号化を利用できます。このライブラリでは、次のアルゴリズムを使用できます。
|
エンコード |
(オプション)この属性を使用する場合は、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("an important string", "SHA-256", "UTF-8")) // 4825D8AB22800A9BE09986366D6430CA8E704323E4470608AC303A9F1C05626F // SHA-512 の例 writeOutput(hash("an important string", "SHA-512", "UTF-8")) //06B24506B66BA5DA743CC8E2F67977C212379FCE7FF8F3BB99AC7A2A0C053D595B1A4077E9C9346453A95067BCED38338920DF8CC85F4ED3313A7039D37DFCD7 </cfscript>
出力
4825D8AB22800A9BE09986366D6430CA8E704323E4470608AC303A9F1C05626F06B24506B66BA5DA743CC8E2F67977C212379FCE7FF8F3BB99AC7A2A0C053D595B1A4077E9C9346453A95067BCED38338920DF8CC85F4ED3313A7039D37DFCD7