Upfront、私は暗号とパスワードのセキュリティに関する完全な初心者であることを告白したいと思います。私はデータベースにパスワードを保存しようとしているのは、ルビーのbabysatです。私の理解では、平文パスワードはランダムな「塩」に追加されなければならないということであり、その全体のフレーズのようないくつかのハッシュアルゴリズムによってハッシュ化する必要があります。その文字列は、データベースに格納されるとルビーでハッシュされたパスワードを使って作業する
Digest::SHA1.hexdigest(salt_plus_plainpassword)
、どのように一つは、それを取得しません再び未知のランダムな塩が付加されていた場合、ユーザーが入力した内容が正しいことを確認するためにもう一度表示しますか?
よく言われています。 –
これについて詳しく説明します:塩を保管することは、虹のテーブルへの攻撃からあなたを救うことだけが目的であるため、問題ではありません。ハッシュは不可逆的だが予測可能であるため、攻撃者は事前に計算された共通パスワードのハッシュを見るだけで、無制限ハッシュからパスワードを見つけることができます。 sha1( "hello")[1]の結果を推測してリストするのは簡単ですが、sha1( "hello" + salt())の結果は本当に難しいと推測します。 [1]それは:aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434dなので、私はそれが無制限のデータベースで見つかるたびに、私はパスワードを知っています。 – Skade