我正在创建一个试图解码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%
然而,在我开始解决这个问题之前,我想知道这是否是这样做的方法,或者有更聪明的方法可以做到这一点。
答案 0 :(得分:2)
而不是试图强制哈希,
然后让您的程序只需检查rainbow table(您可以存储在SQL中),而不必强行破坏每个以前未破解的哈希值。
如果散列不在彩虹表中,这意味着它很大/不容易被破坏,不应该被网站破解,有可能使用太多的CPU和撞毁你的网站。