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

Php MD5哈希解码网站,使用AJAX显示进度,php,javascript,jquery,ajax,progress,Php,Javascript,Jquery,Ajax,Progress,我正在创建一个网站,试图解码md5哈希(最多5个字符) 用户可以输入他们想要解码的MD5散列,网站首先检查散列是否已经在数据库中 网站: 数据库中的散列:fbade9e36a3f36d3d676c1b808451dd7 哈希不在db中:任何其他字符字符串 如果散列不在数据库中,网站将尝试对其进行解码 我想做的是做一个AJAX调用来检查哈希是否在db中。如果不是,我想在后端(PHP)解码时显示一个进度计数器 我目前拥有的代码是: $(document).ready(function() { $

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

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

网站:

数据库中的散列:fbade9e36a3f36d3d676c1b808451dd7

哈希不在db中:任何其他字符字符串

如果散列不在数据库中,网站将尝试对其进行解码

我想做的是做一个AJAX调用来检查哈希是否在db中。如果不是,我想在后端(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;
  });
});
$(文档).ready(函数(){
$('form.decode').submit(函数(){
变量形式=$(此);
var submit_button=$('input[name=“submit”]”,此选项);
var submit_image=$(submit_按钮).attr('src');
var action=$(this.attr('action');
$('table.result tr').remove();
var html='';
html+='\n';
html+='\n';
html++='+$('input[name=“hash”]',form.val()+'\n';
html+='\n';
$('table.result').append(html);
$(submit_button).attr('src','style/ajax loader.gif');
$.ajax({
url:action+'/json',
键入:“POST”,
数据:({hash:$('input[name=“hash”]”,form.val()}),
数据类型:“json”,
成功:功能(数据)
{
如果(!data.result){
var html='';
html+='\n';
html+='\n';
html+='在我们的数据库中找不到哈希值!\n';
html+='\n';
html+='\n';
html+='\n';
html+='解码哈希(0%)\n';
html+='\n';
$('table.result').append(html);
}否则{
var html='';
html+='\n';
html+='\n';
html+=''+数据.value+'\n';
html+='\n';
$('table.result').append(html);
$(提交按钮).attr('src',提交图像);
}
}
});
返回false;
});
});
代码太长,无法读取?->我只是做一个AJAX调用,看看哈希是否存在,如果不存在,我会随着解码过程的进展(默认为0%)向结果表添加一行

从这里我需要做什么

我在想:

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

后台进程通过每x秒更新一次数据库来跟踪其进度(主键是散列)

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

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

而不是试图强制执行哈希

  • 下载一个
然后让您的程序只需检查(可以存储在SQL中),而不必强制执行以前未破解的哈希


如果哈希不在rainbow表中,这意味着它是巨大的/不容易破解的,不应该被网站试图破解,冒着使用太多CPU和破坏网站的风险。

你打算如何“解码”哈希?@Tomas:我在想暴力强迫它为漫长的等待做好准备。MD5虽然不是最安全的哈希算法,但却是一种加密安全的哈希算法。要找到给定哈希值的输入,需要数百台机器运行数年。@JB Nizet:它会尝试最多5个字符的值。假设我有100个可能的字符。使用一张像样的gfx卡尝试1000000000个可能的值真的需要这么长时间吗?@JB Nizet事实上,强制使用MD5比以前快多了,因为图形卡可以执行大量并行操作。例如,Whitepixel 2.0报告,在配备四个HD5970图形卡的设备上,猜测率为每秒331亿MD5猜测。由于提问者将服务限制为仅5个字符,因此可能在30秒内完成。请参阅:数据是否通过API在某处可用?否则,我必须每x周复制一次新数据库。