Dev@Free

          zJun's Tech Weblog

          [轉] 破解MySQL的MD5函數

          As per the documentation on MySQL I moved the storage of passwords from using Password() to using MD5(). I read a number of places that stated that this was a method that couldn't be reversed and it was far more secure than the previous method. I was feeling confident that life was about to get a little more secure. While going through my daily RSS feeds and mailing lists for SpikeSource , I happenned upon a thread about someone discussing how easy it was to break MD5 hashes. It was a simple matter of using a brute force algorithm to check all the different combinations.

          Eager to try this out for myself, I did a quick Google and found a Project RainbowCrack which was a Windows/Linux utility that would brute force crack MD5 hashes amongst other secure algorithms. Thinking it would be shrouded in mathematical terms and phrases unfamiliar to me I didn't hold out much hope that I could get it to do what I wanted; to take a sample of passwords that were stored in MySQL database tables using the MD5() function and crack them for me.

          The project builds a number of lookup tables to make the whole process a lot quicker. This in all fairness only took about 18hours to complete on my dual processor 3GHZ machine. After the tables where built it was a simple matter of running a simple command line utility to crack the MD5 hash. Time taken? 1.26seconds! That's how secure MySQL passwords encoded with MD5() are at this precise moment.

          Some sample output from RainbowCrack

          				e:\rainbowcrack-1.2-win>rcrack *.rt -h 7694f4a66316e53c8cdd9d9954bd611d
          md5_loweralpha#1-7_0_2100x8000000_all.rt:
          128000000 bytes read, disk access time: 6.23 s
          verifying the file...
          searching for 1 hash...
          plaintext of 7694f4a66316e53c8cdd9d9954bd611d is qlkjalkj
          cryptanalysis time: 1.52 s
          statistics
          -------------------------------------------------------
          plaintext found:          1 of 1 (100.00%)
          total disk access time:   6.23 s
          total cryptanalysis time: 1.52 s
          total chain walk step:    403651
          total false alarm:        388
          total chain walk step due to false alarm: 579374
          result
          -------------------------------------------------------
          7694f4a66316e53c8cdd9d9954bd611d  qlkjalkj  hex:71
          
          		

          So really, the only reason to store passwords using MD5() would be to discourage the casual hacker, but it is by no means a secure method as some sites would have you believe. It is fair to note that the RainbowCrack documentation states that salted MD5 hashes can't be broken, but MySQL doesn't salt their implementation so it makes no difference here.

          posted on 2007-01-17 16:22 zJun's帛羅閣 閱讀(2587) 評論(0)  編輯  收藏 所屬分類: 數據庫

          導航

          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          統計

          常用鏈接

          留言簿(15)

          隨筆分類

          隨筆檔案

          相冊

          收藏夾

          博客

          文檔

          站點

          論壇

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 锡林浩特市| 贵州省| 洪湖市| 沐川县| 阿鲁科尔沁旗| 怀仁县| 太仓市| 盘锦市| 固原市| 准格尔旗| 双峰县| 泰宁县| 新津县| 汝州市| 辽阳市| 禄丰县| 乌兰察布市| 怀安县| 邵阳县| 邯郸县| 临桂县| 天峻县| 凤阳县| 和平县| 乐东| 寿阳县| 曲阜市| 禄丰县| 金秀| 沿河| 锡林郭勒盟| 白山市| 法库县| 德庆县| 大埔县| 东乌珠穆沁旗| 郑州市| 天长市| 平山县| 合阳县| 婺源县|