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

时间:2011-07-09 18:04:17

标签: php javascript jquery ajax progress

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

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

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

db中的哈希: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;
  });
});

代码太久无法阅读? - &GT;我只是进行一次AJAX调用以查看是否存在哈希,如果它不存在,我会在结果表中添加一行以及解码过程的进度(默认为0%)。

我需要从这里做些什么?

我在想:

如果hash不存在,则运行js-function,调用(AJAX)后台脚本,开始解码进程。

后台进程通过每x秒更新一次db来跟踪它的进度(primary_key是哈希)。

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

然而,在我开始解决这个问题之前,我想知道这是否是这样做的方法,或者有更聪明的方法可以做到这一点。

1 个答案:

答案 0 :(得分:2)

而不是试图强制哈希

然后让您的程序只需检查rainbow table(您可以存储在SQL中),而不必强行破坏每个以前未破解的哈希值。

如果散列在彩虹表中,这意味着它很大/不容易被破坏,不应该被网站破解,有可能使用太多的CPU和撞毁你的网站。