2016-08-31 21 views
-4

バックエンドがmongodbにデータを保存するノードjsであるハイブリッドモバイルアプリケーションを作成したいとします。私のサーバーは正常に動作し、ユーザーの要求を処理するためのルートを用意しました。ハッシュされたパスワードから実際のパスワードを取得するにはどうすればよいですか?

私はパスワードハッシュをmongodbに保存するためにbcryptを使用しています。パスワードは正しく保存されますが、実際のパスワードは取得できません。たとえば、管理者がユーザーデータを取得するためにノードjsサーバーにGETリクエストを渡すと、フロントエンドでハッシュパスワードが取得されます。

これは、フロントエンドでの結果である:

enter image description here

これは、パスワードハッシュを格納するためのコードです:

UserSchema.pre('save', function (next) { 
    var user = this; 
    if (this.isModified('password') || this.isNew) { 
     bcrypt.genSalt(10, function (err, salt) { 
      if (err) { 
       return next(err); 
      } 
      bcrypt.hash(user.password, salt, function (err, hash) { 
       if (err) { 
        return next(err); 
       } 
       user.password = hash; 
       next(); 
      }); 
     }); 
    } else { 
     return next(); 
    } 
}); 

どのように私は本当のパスワードを取得することができますしてください?

+4

パスワードをハッシュして保存することのポイントは、元のパスワードを復元できないことです。 –

+1

パスワードを取得しようとしないでください、あなたはパスワードを提供することができます、すでに保存されたパスワードを暗号化し、一致させる。 – Aby

答えて

4

できません。これはパスワードハッシングの目的です。

+0

あなたの答えをありがとう、それはちょうど疑問だった – Taha

5

これは、パスワードを「不可逆的に」変形するハッシュのポイントです。プレーンハッシュの場合は、rainbowtablesやその他のソート方法を使用してクラッシュする必要があります。あなたがパスワードをハッシュするために「塩」を使用した場合、私はあなたがパスワードを解読する機会がさらにスリムであると信じています。

特に、ブローフィッシュサイファーを使用するbcryptは、非常に強力なハッシングアルゴリズムです。

ハッシングパスワードが標準となっているため、ウェブサイトの所有者は物理的にプレーンパスワードにアクセスできません。

もう1つのフォローアップの質問:なぜですか?

+0

あなたの答えに感謝、それはちょうど疑いだった – Taha

+1

Bcryptはまた、操作が時間の相当量を取るように反復する、これは重要なポイントです。ちょうどハッシュのパスワードは、塩でもそれらを保護するために十分ではない、10Mの共通のパスワードのリストがあります非常に高速ですが、私のラップトップは毎秒700K SHA - 256ハッシュを実行することができます。それらを実行するためのさらに特別なプログラム。 – zaph

4

できません。設計上、ハッシュ関数、特に暗号ハッシュ関数は非可逆であるか、one-way functionです。デザインによって暗号ハッシュ関数は、次のプロパティ

  • を持って、可能なすべての入力をしようと によって除いそのハッシュ値から入力を生成するために実行不可能である任意の入力
  • のハッシュ値を計算するために迅速である入力へ
  • 小さな変化は、新しいハッシュ値が古いハッシュ値と相関表示されるように、広範囲のハッシュ値を変更する必要があり
  • 2つの異なる入力のウィットを見つけることは実行不可能ですh同じハッシュ値

これは、パスワード保存を保護するための多くの重要な要素の1つです。たとえば、攻撃者がサーバーにアクセスしてデータベース上で任意のクエリを実行できる場合、適切な暗号化ハッシュ関数により、攻撃者はユーザーのパスワードを取得できなくなります。

出典:Wikipedia - Cryptographic hash function

関連する問題