2016-09-18 12 views
0

によって暗号化される私は(.NET C#の上に構築された)古いアプリケーションがハッシュされたパスワードsha1(password . salt)、およびを持つユーザーテーブルを備え持っている私は、このデータを移行する必要が安全に私の新しいのRailsアプリケーションに(すでにbcrypt-ruby gemを使用してパスワードを暗号化)し、この問題のためではなく、ソリューションの以下のようなものを回避して最善の解決策を探している:移行SHA1塩漬けハッシュはbcryptの

  1. すべてリセットし、現在のユーザーのパスワードをして を続行するためにそれらを強制 『』手順パスワードを忘れました
  2. プレーンテキストのパスワードを使用します(たとえば、初めて新しいアプリケーションにログインするときなど)。
  3. RailsアプリでもSHA1と同じ暗号化処理を使用します(代わりにBCrypt を使用する必要があります)。

私が読んでいるように、ユーザーが自分の古いパスワードを使って新しいアプリにログインできるようにして(私はそれをやる方法がわからない)、パスワードを暗号化するBCryptで)、Railsアプリで新規に登録したユーザーのパスワード暗号化と同じ手順に従います。

この問題を解決するには、すべての提案されたソリューションをお読みいただきありがとうございます。

+3

あなたはすでに何をすべきか分かっていますか?何を求めているのですか? – PeeHaa

答えて

0

あなたは正しい道を歩いています。あなたはする必要があります...

  • Railsアプリケーションのユーザーテーブルにsha1_passwordフィールドを追加します。
  • 認証を変更します。
    • bcryptパスワードが存在する場合は、そのパスワードを確認してください。
    • 新しいbcryptパスワードフィールドが空白の場合、sha1_passwordを確認してください。
    • 一致するものがある場合は、それらが移行していることがわかっており、プレーンテキストのパスワードも持っています。
    • 暗号パスワードフィールドを設定します。
  • 終了です。

これにより、ユーザーは時間の経過とともに移行することができます。その後、ある時点で、残りの部分を「パスワードリセット」ルートにするか、または少なくとも電子メールでそれらを迷惑にかけ、最終的には完全にbcryptに切り替えることにします。

+3

あなたは最も重要な部分を忘れました。変換すると、sha1のハッシュをヌークします。さもなければ、この全体は役に立たない。 – PeeHaa

+0

@PeeHaa最初のステップは "存在する場合はbcryptを確認する"ことですので、それはやる価値がありますが、厳密には必要ありません。それが空白の場合に限り、我々はsha1に落ちる。 –

+2

それは非常に厳密に必要です。あなたがまだそれを防ぐことを試みている問題を抱えているので、あなたがそれを傷つけないならば、この全努力は役に立たない。ハッシュをプレーンテキストに "復帰"する能力... – PeeHaa

関連する問題