0

3000 ユーザーのサイトを継承しました。Doplphin (Boonex) に基づく新しいサイトのデータベースにこれらのユーザーをすべてインポートしたいと考えています。

データをインポートしようとしました。ユーザー データは正常にインポートされますが、パスワードはインポートされません。

すべてのパスワードは暗号化されています。

古いデータベースでは、どのタイプの暗号化が使用されているかわかりませんが、おそらく MD5 ではないと思います。

これは、古いデータベースに現在保存されているパスワードの 1 つの形式です。

$2a$10$M/HQVUTyxrdbiwNjokJoUOIbUAK71yvYXKPe1YdFgS2I3Pw6Ojlju

これらのパスワードを新しいデータベースにインポートするときに正しく機能させるにはどうすればよいですか?

別のフレームワーク内で動作している新しいデータベースにパスワードをインポートするために知っておく必要がある方法はありますか?

4

1 に答える 1

3

そのパスワードはBCryptハッシュされます。(からわかります$2a$10$...

うまくいけば、あなたのプラットフォームには次のものがあります。

BCrypt.CheckPassword(savedHash, enteredPassword);

関数。


ここの私の答えから:

BCrypt ハッシュ文字列は次のようになります。

$2a$10$M/HQVUTyxrdbiwNjokJoUOIbUAK71yvYXKPe1YdFgS2I3Pw6Ojlju
$==$==$======================-------------------------------

どこ

  • 2a: アルゴリズム識別子 (BCrypt)
  • 10:コストファクター(1,024発)
  • M/HQVUTyxrdbiwNjokJoUO: OpenBSD-Base64 でエンコードされたソルト (22 文字、16 バイト)
  • IbUAK71yvYXKPe1YdFgS2I3Pw6Ojlju: OpenBSD-Base64 でエンコードされたハッシュ (31 文字、24 バイト)

編集:これらの言葉がぴったり合っていることに気づきました。私は共有しなければなりませんでした:

$2a$10$TwentytwocharactersaltThirtyonecharacterspasswordhash
$==$==$======================-------------------------------

しかし、BCryptは OpenBSD に取り組んでいた人々によって作成されました。OpenBSDでは、パスワード ファイルの形式が既に定義されています。

$ [HashAlgorithmIdentifier]$[AlgorithmSpecificData]

これは、「bcrypt 仕様」が OpenBSD パスワード ファイル形式に容赦なくリンクされていることを意味します。そして、誰かが「bcrypt ハッシュ」を作成するときはいつでも、常に次の形式の ISO-8859-1 文字列に変換します。

$ 2a$ [Cost]$[Base64Salt][Base64Hash]

いくつかの重要なポイント:

  • 2aはアルゴリズム識別子です
    • 1: MD5
    • 2: 初期の bcrypt では、どのエンコーディング パスワードが含まれているかについて混乱がありました (廃止)
    • 2a: 現在の bcrypt。パスワードを UTF-8 エンコードとして指定します。
  • コストは、ハッシュを計算するときに使用されるコスト ファクターです。「現在の」値は 10 です。これは、内部キーのセットアップが 1,024 ラウンド行われることを意味します。
    • 10: 2 10 = 1,024 回の繰り返し
    • 11: 2 11 = 2,048 回の繰り返し
    • 12: 2 12 = 4,096 回の繰り返し
  • OpenBSD パスワード ファイルで使用される base64 アルゴリズムは、他のすべての人が使用する Base64 エンコーディングとは異なります。彼らは独自のものを持っています:

    Regular Base64 Alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
        BSD Base64 Alphabet: ./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
    

    そのため、bcrypt の実装では、組み込みまたは標準の base64 ライブラリを使用できません。


この知識を武器にcorrectbatteryhorsestapler、保存されたハッシュに対してパスワードを検証できるようになりました。

$2a$12$mACnM5lzNigHMaf7O1py1O3vlf6.BA8k8x3IoJ.Tq3IB/2e7g61Km
于 2012-11-10T13:16:39.610 に答える