1

サイトを oscommerce ストアから商用アプリケーションに移行しています。

新しいアプリケーションは、直接 MD5 暗号化を使用してパスワードを保存します。Oscommerce は MD5 を使用してパスワードを保存しますが、ランダムな 2 桁の数字 (平文で提供) もハッシュに追加します。

これは誰かがフォーラムに投稿したものです:

追加された 2 文字は、
hash=md5(twocharactersPlainPassword)のような方法でハッシュを作成するためのものです
。つまり: 2letters: 74
Plain Password: PaSs
hash=md5('74PaSs')=acaa6e689ae0008285320e6617ca8e95:74


Oscommerce がパスワードを暗号化するコードは次のとおりです。

// This function makes a new password from a plaintext password.
function tep_encrypt_password($plain) {
  $password = '';

  for ($i=0; $i<10; $i++) {
    $password .= tep_rand();
  }

  $salt = substr(md5($password), 0, 2);
  $password = md5($salt . $plain) . ':' . $salt;

  return $password;
}

// This funstion validates a plain text password with an encrypted password
function tep_validate_password($plain, $encrypted) {
  if (tep_not_null($plain) && tep_not_null($encrypted)) {
    // split apart the hash / salt
    $stack = explode(':', $encrypted);

    if (sizeof($stack) != 2) {
      return false;
    }

    if (md5($stack[1] . $plain) == $stack[0]) {
      return true;
    }
  }

  return false;
}

私の新しいカートがパスワードを暗号化する方法は次のとおりです。

if ($admin_password_encrypt == 1) {
    $password_match = md5($password);
} else {
    $password_match = $password;
}

oscommerce カートから新しいカートに顧客のパスワードをインポートする方法はありますか?

4

5 に答える 5

7

プレーンな MD5 ハッシュをデータベースに保存しないでください。プレーンな MD5 ハッシュは、レインボー テーブルを使用してすばやく簡単にリバース エンジニアリングできます。ただし、将来のパスワードの保存方法に関係なく、問題を解決する方法は次のとおりです。

  1. 新しいデータベースに、パスワードの「バージョン」を指定する列を作成します。これは、パスワードが古いアプリケーションによって生成されたものか、新しいアプリケーションによって生成されたものかを判断するために使用されます。
  2. 古いユーザーをインポートし、パスワードがインポートされたことを示す前述のフラグを設定します。
  3. パスワードを検証するための 2 つのメソッドを作成します。1 つの方法は古いアプリケーションのコードを使用し、もう 1 つは新しい検証方法を使用します。
  4. ユーザーがログインするときは、前述のフラグを確認し、適切な検証方法を使用してください。

とにかく、単純な MD5 ハッシュはほとんどのパスワードで簡単にクラックできることを繰り返したいと思います (人々は短くて覚えやすいパスワードを好むため)。ソルトやより複雑なアルゴリズムを使用してください。両方をお勧めしますが、2 文字より長く、数字に限定されないソルトを使用してください。これにより、パスワードが本当に安全になります。

于 2009-07-10T12:50:15.713 に答える
7

新しいカートのソース コードがあるようです。「ストレート MD5」はパスワードを保存する方法としては非常にひどいので、OSCommerce と同じパスワード保存メカニズムを使用するように単純に変更する必要があります。

あなたの質問に対する答えはノーです。パスワードを変換する方法はありません。

于 2009-07-10T12:41:36.337 に答える
3

いいえ、MD5 は一方向関数のハッシュ アルゴリズムです。oscommerce システムのハッシュを逆にして、salt を削除して再ハッシュすることはできません。ごめん。

于 2009-07-10T12:41:25.120 に答える
1

パスワードが md5 で暗号化されている場合、それらを復号化することはできません。アカウントの作成/最後のパスワードの変更が特定の日付より前に行われたかどうかをログイン コードで確認することをお勧めします。そうであれば、OSCommerce のパスワード検証機能を使用してください。そうでない場合は、独自のものを使用してください。

このようにして、すべての新しいアカウントのパスワードは新しい方法で暗号化され、古いアカウントの場合は引き続き通常どおり処理されるため、ユーザーに対して透過的になります。

別の、おそらくより良いオプションは、OsCommerce のソルティング方法を引き続き使用することです。より安全で、既存のパスワードを保持することもできます。

于 2009-07-10T12:43:29.003 に答える
0

ハッシュ アルゴリズム間の自動変換の方法はありません。残念ながら、次の悪いオプションのいずれかを選択することになる可能性があります。

  1. ユーザーが古いシステムにログインすると、新しい形式でハッシュを保存するように古いカートを構成またはプログラムします。
  2. パスワード クラッカーを使用して、システム カートの古いパスワードの一部を復元します。
  3. 新しいベンダーに古い形式のサポートを依頼する
  4. 新しいシステムを使用する際にソルト テキストをパスワードの先頭に追加する必要があるすべてのユーザーに通知を送信するか、既知のソルトを先頭に追加するようにシステムをカスタマイズします。
于 2009-11-16T08:14:22.893 に答える