1

ファイルを入手したところ、258 MB (解凍済み) です。ファイルが公開された日の午後 2 時までに、ハッシュ化されたパスワードがリストに含まれているかどうかを確認できるサイトが既にありました。昨夜それを入手し、短い C++ プログラムを作成して、ファイルを 1 行ずつ読み取り、MySQL に挿入しました。

ifstream fin ("c:/xampp/htdocs/combo_not.txt");
string    myStr;

while(getline(fin, myStr))  
  {                    

 mysql_query(conn, ("INSERT INTO passwords(password) VALUES('" + myStr + "')").c_str());   

  }    

この質問は反対票を投じられる可能性がある(またはクローズされる可能性がある)ことは承知していますが、答えが欲しいのは本当の質問です。短い時間枠内で、これほど大きなファイルをどのように横断するのでしょうか? CTR Fプログラムがメモリ不足になるため、メモ帳でファイルを開いて押して検索することはできません。これまでのところ、私のテーブルには 100 万レコード未満のレコードがあり、c++ コンソール プログラムは現在までに約 12 時間以上実行されています。

4

4 に答える 4

2

インデックスを使用します..バイナリ検索とハッシュは非常に高速です。

于 2012-06-07T20:35:02.683 に答える
1

MySQL では、デフォルトで自動コミットが有効になっています。これは、すべての行に対して、ディスクの書き込みとフラッシュを含むトランザクションを開始してコミットしていることを意味します。

次のように自動コミットをオフに設定します。

mysql_autocommit(conn, 0);

ループの前に、次を呼び出します。

mysql_commit(conn);

ループの後。

于 2012-06-21T04:49:24.660 に答える
1
<?php
echo sha1("password")
?>

コマンド プロンプトを開き、次のコマンドを入力します。

sort hacked.txt /o sorted_data.txt

ファイルがソートされたら、次のコマンドを入力します

findstr "string" sorted_data.txt

パスワードがリストにある場合は、ターミナルに出力されます。パスワードがリストにない場合は、最初の 5 文字を「0」文字に置き換えてみてください 驚いたことに、私のパスワードはリストにありました

于 2012-06-07T22:16:03.057 に答える
0

彼らはおそらくデータベースにパスワードを挿入しようとしなかったか、ハッシュ化されたパスワード自体にクラスター化されたインデックスを使用してデータベースにパスワードを挿入しようとしなかったでしょう。

于 2012-06-07T20:43:29.347 に答える