【Ruby3.x】String::crypt()メソッドの使い方
cryptメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
cryptメソッドは、レシーバである文字列をパスワードとして扱い、引数で指定されたソルト文字列を用いて一方向ハッシュ値を計算するメソッドです。このハッシュ値は、元のパスワードを特定できない特性を持ちます。
ソルトとは、パスワードからハッシュ値を生成する際に、結果を多様化させるために使用されるランダムなデータのことです。例えば、同じパスワードでも異なるソルトを使えば、異なるハッシュ値が生成されるため、辞書攻撃やレインボーテーブル攻撃といったセキュリティ脅威に対する耐性を向上させることができます。
このメソッドは、主にUNIX系のシステムで長らく利用されてきたcrypt(3)関数に準拠しており、多くの場合、DES (Data Encryption Standard) に基づくアルゴリズムを用いています。戻り値は、計算されたハッシュ値を含む文字列です。
しかし、現代のセキュリティ要件において、DESベースのcryptアルゴリズムは十分な強度を持っているとは言えません。計算速度が速すぎたり、出力されるハッシュ値の桁数が短いなどの理由から、攻撃者が効率的に総当たり攻撃を行うリスクがあります。
そのため、現在新たにパスワードをハッシュ化して保存するシステムを構築する際には、bcrypt、scrypt、Argon2といった、より強力で安全なアルゴリズムを提供するライブラリの使用が強く推奨されます。cryptメソッドは、既存の古いシステムとの互換性を保つために利用されることがほとんどです。
構文(syntax)
1"password".crypt("ab")
引数(parameters)
salt
- salt: ハッシュ化の際に使用されるランダムな文字列(またはその一部)。パスワードなどの機密情報を安全に保管するために使用されます。
戻り値(return)
String
指定されたソルトとアルゴリズムを使用して文字列を暗号化し、その結果を文字列として返します。