MD5哈希解码网站,使用AJAX显示进度


MD5 hash decoding website which displays progress using AJAX

我正在创建一个网站,试图解码md5哈希值(最多5个字符)。

用户可以输入他们想要解码的MD5哈希值,网站首先检查该哈希值是否已经在数据库中。

网站:http://webtools.pieterhordijk.com

数据库中的哈希值:fbade9e36a3f36d3d676c1b808451dd7

Hash不在db:任何其他字符字符串

如果哈希值不在数据库中,网站将尝试解码它。

我想做的是做一个AJAX调用来检查哈希是否在数据库中。如果不是,我想在后端(PHP)解码时显示进度计数器。

我现在的代码是:

$(document).ready(function() {
  $('form.decode').submit(function() {
    var form = $(this);
    var submit_button = $('input[name="submit"]', this);
    var submit_image = $(submit_button).attr('src');
    var action = $(this).attr('action');
    $('table.result tr').remove();
    var html = '';
    html+= '<tr>'n';
    html+= '  <td><img src="/style/information.png" alt="Information" title="Finding value"></td>'n';
    html+= '  <td>'+$('input[name="hash"]', form).val()+'</td>'n';
    html+= '</tr>'n';
    $('table.result').append(html);
    $(submit_button).attr('src', 'style/ajax-loader.gif');
    $.ajax({
      url: action+'/json',
      type: 'POST',
      data: ({hash : $('input[name="hash"]', form).val() }),
      dataType: 'json',
      success: function(data)
      {
        if (!data.result) {
          var html = '';
          html+= '<tr>'n';
          html+= '  <td><img src="/style/error.png" alt="Error" title="Hash not found in database"></td>'n';
          html+= '  <td>Couldn''t find hash-value in our database!</td>'n';
          html+= '</tr>'n';
          html+= '<tr>'n';
          html+= '  <td><img src="/style/information.png" alt="Information" title="Decoding"></td>'n';
          html+= '  <td>Decoding hash (<span class="progress">0</span>%)</td>'n';
          html+= '</tr>'n';
          $('table.result').append(html);
        } else {
          var html = '';
          html+= '<tr>'n';
          html+= '  <td><img src="/style/accept.png" alt="Success" title="Decoded hash"></td>'n';
          html+= '  <td>'+data.value+'</td>'n';
          html+= '</tr>'n';
          $('table.result').append(html);
          $(submit_button).attr('src', submit_image);
        }
      }
    });
    return false;
  });
});

代码太长无法阅读?->我只是做一个AJAX调用,看看哈希是否存在,如果它不存在,我添加一行的结果表与解码过程的进展(默认0%)。

从这里我需要做什么?

我在想:

如果hash不存在,运行js函数,调用(AJAX)一个后台脚本,开始解码过程。

后台进程通过每x秒更新数据库来跟踪它的进程(primary_key是哈希值)。

调用后台进程的js函数调用另一个函数(AJAX)每隔x秒从服务器请求进度,直到100%

然而,在我开始解决这个问题之前,我想知道这是一种方法,还是有一种更聪明的方法。

不尝试暴力破解哈希

  • 下载彩虹表不是更有意义吗

然后让您的程序简单地检查彩虹表(您可以将其存储在SQL中),而不必强制执行每个先前未破解的哈希。

如果哈希值不是在彩虹表中,这意味着它是巨大的/不容易破解,不应该试图被网站破解,有使用过多CPU和崩溃网站的风险