我正在创建一个网站,试图解码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和崩溃网站的风险