メインコンテンツまでスキップ
バージョン: 開発中

Generate password hash

Generate password hash ( password {; options} ) -> 戻り値

引数説明
password文字🡒ユーザーのパスワード。最初の72文字のみ使用。
optionsオブジェクト🡒オプションを格納したオブジェクト
戻り値文字🡐ハッシュされたパスワードを返します。

説明

Generate password hash ファンクションはpassword 引数のパスワードから暗号化ハッシュアルゴリズムによって生成された、安全なパスワードハッシュを返します。

password 引数には、文字列を渡します。Generate password hash はパスワードのハッシュ化された文字列を返します。同じパスワードを複数回渡した場合、ハッシュ化された文字列は毎回異なる結果が返されます。

options オブジェクト引数には、パスワードハッシュを生成する際に使用したいプロパティを渡します。利用可能な値は以下の表にまとめてあります:

プロパティ値の型詳細デフォルト値
algorithm文字列使用するアルゴリズム。現在サポートされているのは"bcrypt"のみです(大文字と小文字は区別されます)。bcrypt
cost数値使用するスピード。bcryptでサポートされている値は4から31までの間の数値です。10

: options 引数オブジェクト内のどちらかの値が無効であった場合、エラーメッセージが生成され、空の文字列が返されます。

エラー管理

以下のエラーが返される可能性があります。これらのエラーはGET LAST ERROR STACK および ON ERR CALL コマンドで分析することができます。

番号メッセージ
850パスワード-ハッシュ: サポートされていないアルゴリズムです。
852パスワード-ハッシュ: 利用不可なbcrypt cost 引数です。4から31の間の値を指定してください。
bcryptについて

bcryptは、Blowfish暗号に基づいたパスワードハッシュ機能です。これは、レインボーテーブル攻撃に対するプロテクトとしてsaltと併用することでさらに有用な機能です。bcryptよりハッシュの反復回数を増やすことが可能で、計算結果に時間がかかりすぎて処理のコストがかかってしまうことから、速い計算速度におけるブルースフォース攻撃にも耐えうるようになります。

例題

以下の例題では、bcryptを使用して、cost factorを4で指定してパスワードハッシュを生成する場合を考えます:

 var $password : Text
 var $hash : Text
 var $options : Object
 
 $options:=New object("algorithm";"bcrypt";"cost";4)
 $password:=Request("Please enter your password")
 
 $hash:=Generate password hash($password;$options)
 [Users]hash:=$hash
 SAVE RECORD([Users])

: 同じパスワードを複数回渡した場合、ハッシュ化された文字列は毎回異なる結果が返されます。これはbcryptのようなアルゴリズムにとっては仕様で、最適な方法は、毎回ハッシュを生成するごとに新しいランダムなソルトを作成することだからです。パスワードをどのようにチェックするかの例題については、Verify password hash の説明を参照してください。

参照

Generate digest
Verify password hash