文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页资讯知识加油站 → 如何利用数据库来破解md5

如何利用数据库来破解md5

时间:2009/12/19 8:58:00来源:本站整理作者:我要评论(0)

 为什么密码位数短的MD5不安全?
  一个长度为4的纯小写字母生成的密码在数据库的帮助下可以在0.005s内被破解。这个时间还包括了连接数据库的时间,运行的环境是在我900MHZ的个人PC上。
  注意,我们要讨论的是一种破解密码的思维,而不提供一种具体的方法。如果你的希望和我们不一致,那么后边将不是你所需要的内容了。
  前几天看MD5的资料时,我突然冒出个想法:
  如果借助数据库的海量存储和检索优势,破解较短长度的单向MD5应该不是很大的问题。
  首先,我们假设密码长度为6的话(这是很多论坛采用的长度),如果密码都由小写字母构成的话,这个数据库要存储266条数据,每条数据的长度为6+40=46字节,那么这个数据库的大小是14210125696byte,大约为14G。对于一个大型数据库来说这样的数据量并不大。
  为了使我的计算机可以比较快的实现我的想法,我假设密码长度为四位小写字母了。下边就让我们来看看过程。
  我运行的环境:
  Windows XP Pro,Apache1.3,MySql 3.23.49,PHP 4.0.6。
  主频900MHZ,内存256M。
  首先我在Mysql里建立了一个md库和一个md表用于存放密码和加密后的MD5字符。
  表的结构如下:
  然后通过程序来向里边添加数据:
  <?php
  // Connecting, selecting database
  $link = mysql_connect("localhost", "root", "") or die("Could not connect");
  print "Connected successfully<br>";
  mysql_select_db("md") or die("Could not select database");
  function getmicrotime()
  {
  list($usec, $sec) = explode(" ",microtime());
  return ((float)$usec + (float)$sec);
  }
  $time_start = getmicrotime();
  set_time_limit ( 0 );
  echo '<html><head>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <title>md5</title>
  <style>
  <!--
  html { font-family: Verdana; font-size: 9pt }
  -->
  </style>
  </head>
  <body>';
  // create the password
  for ($i = 97 ; $i < 123 ; $i++ )
  {
  for( $j = 97 ; $j < 123 ; $j++ )
  {
  for ( $k = 97 ; $k < 123 ; $k++ )
  {
  for( $l = 97 ; $l < 123 ; $l++ )
  {
  $name = chr($i).chr($j).chr($k).chr($l);
  echo $name.' '.$md.'<br>';
  $md = md5( $name );
  mysql_query("INSERT INTO `md` (`pass`, `passmd`) VALUES ('$name', '$md');",$link);
  }
  }
  }
  }
  $time_end = getmicrotime();
  $time = $time_end - $time_start;
  echo '<center>Runtime: '.$time.' seconds</center></font>';
  echo '</body></html>';
  ?>
  通过运行这个程序构建数据用掉了我大概五分钟的时间。
  然后,一个很简单的脚本就可以实现密码的破解查询了。
  <?php
  $link = mysql_connect("localhost", "root", "") or die("Could not connect");
  print "Connected successfully<br>";
  mysql_select_db("md") or die("Could not select database");
  function getmicrotime()
  {
  list($usec, $sec) = explode(" ",microtime());
  return ((float)$usec + (float)$sec);
  }
  echo '<html><head>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <title>md5</title>
  <style>
  <!--
  html { font-family: Verdana; font-size: 9pt }
  INPUT {
  BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Verdana
  }
  -->
  </style>
  </head>
  <body>';
  $time_start = getmicrotime();
  set_time_limit ( 0 );
  if ( 2 == $step )
  {
  $result = mysql_query( "SELECT * FROM `md` WHERE `passmd`='$inpass' LIMIT 0, 30 " , $link );
  while ($row = mysql_fetch_array($result))
  {
  echo '<p>The password is <b>'.$row[0].'</b><p>';
  echo '<a href="index.php?">click here to goback</a>';
  }
  }else
  {
  echo
  '
  <form method="post" >
  <input name="inpass"><INPUT TYPE="hidden" name="step" value="2">
  <INPUT TYPE="submit">
  </form>
  ';
  }
  $time_end = getmicrotime();
  $time = $time_end - $time_start;
  echo '<center>Runtime: '.$time.' seconds</center></font>';
  echo '</body></html>';
  ?>
  这样,很容易的就实现了密码破解。
  下边是演示:
  查询页面
  查询结果
  如果数据库足够大的话,破解MD5应该就不是什么困难的事情了,而且真正使用的密码并不是像理论上那么多,人们总是很习惯的使用简单好记的密码。在时间上,采用分布式计算是个好的选择。一旦这样的一个公用数据库建立起来,MD5将不再安全。一个好的办法是加长你的密码,长于13位的密码是比较有保障的。
 

相关视频

    没有数据

相关阅读 山东大学王小云教授成功破解MD5iPhone数据迁移怎么用 iOS 12.4数据迁移功能使用教程LOL云顶之弈各英雄如何搭配装备 云顶之弈全英雄装备搭配推荐数据库流行度排行2019年9月 数据库排行榜2019年最新版瘟疫传说无罪配置要求如何 瘟疫传说无罪配置要求推荐进击的巨人2最终之战配置要求如何 进击的巨人2最终之战配置推荐如龙极2配置要求如何 如龙极2配置要求推荐三位一体4配置要求如何 三位一体4配置要求推荐

文章评论
发表评论

热门文章 携号转网什么时候实行谷歌浏览器“Adobe Fl2015双11怎么抢红包_2odysseusota4win图文教

最新文章 2022蚂蚁庄园6月22日今2022蚂蚁庄园6月21日今 2022蚂蚁庄园6月20日今日答案 度量衡是我国2022蚂蚁庄园6月17日今日答案 夏季甜品烧仙2022蚂蚁庄园6月16日今日答案 为了减肥每天2022蚂蚁庄园6月15日今日答案 卫生纸和面巾

人气排行 B站答题答案大全 哔哩哔哩答题答案2019弹幕ipad3和ipad2的8大区别nfc功能是什么 nfc怎么用 NFC功能的手机有哪全国青少年禁毒知识竞赛在线答题 全国青少年bd版是什么意思?bd版和dvd版哪个好?手机cpu天梯图2020最新版11月 手机cpu性能天BD职位是什么?BD职业解析!硬盘划分主分区、扩展分区、逻辑分区、活动