1

我已经获得了该文件,它是 258 MB(解压缩) 已经有网站能够在文件发布当天下午 2:00 之前确认哈希密码是否在列表中。昨晚拿到了,写了一个简短的C++程序,逐行读取文件并插入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
<?php
echo sha1("password")
?>

打开命令提示符并输入以下命令:

sort hacked.txt /o sorted_data.txt

文件排序后,然后键入此命令

findstr "string" sorted_data.txt

如果您的密码在列表中,它将在终端中打印出来。如果您的密码不在列表中,请尝试用“0”字符替换前五(5)个字符令人惊讶的是,我的密码在列表中

于 2012-06-07T22:16:03.057 回答
1

MySQL默认启用自动提交。这意味着您正在为每一行启动并提交一个事务,其中包括磁盘写入和刷新。

设置自动提交关闭:

mysql_autocommit(conn, 0);

在循环之前,然后调用:

mysql_commit(conn);

循环之后。

于 2012-06-21T04:49:24.660 回答
0

他们可能没有尝试将密码插入数据库,或者没有尝试使用散列密码本身的聚集索引将密码插入数据库。

于 2012-06-07T20:43:29.347 回答