Javascript中的代码不清楚

时间:2015-12-22 21:14:22

标签: javascript jquery html css

我花了4个小时试图弄清楚以下代码中发生了什么。我很难理解,因为我还没有编写Javascript。

使用Javascript:

function pincheck() {       
  var n = 123456789123,
  t = md5(n + " " + $("#wert").val()),
  e = $("input[name='some_hash']").val();
  $.post("https://url-test.com/site?check=" + t, {some_hash: e}, function(n) {
    $("#inputWert").html(n == t ? "<span style='color:green; font-weight:bold'>OK</span>" 
                                : "<span style='color:red; font-weight:bold'>NOT OK</span>")
  })
}

对应的HTML表单:

<form action="https://url-test.com/site" method="post" accept-charset="utf-8">
  <div style="display:none">
    <input type="hidden" name="some_hash" value="2cb6beab7ac4240043b20674a3dce6a5" />
  </div>    
  <input type="text" id="wert" name="wert" placeholder="WERT" onchange="pincheck()">
  <div id="inputWert">Please input</div>
  <input type="submit" value="Submit" />
  <h2>Please explain<br/><textarea name="explain" style="width: 650px;height: 100px;" placeholder="Explanation"></textarea><br/>    
</form>

我的想法是:

  1. 函数pincheck()检查n == t
  2. 但是因为t是md5哈希,所以     永远不能等于n,这是一个数字。 它是否正确?如果wert = 000,那么变量“t”的值是字符串“123456789123 000”的MD5吗?我希望我解释正确。
  3. 我的问题的背景是指我们的大学IT安全任务。我们必须猜出一些数字,然后将其输入文本形式,我想这应该是“wert”。

    我希望有人可以帮助我。提前谢谢!

3 个答案:

答案 0 :(得分:2)

当用户在WERT输入字段中输入内容时,Javascript接受用户的输入,将123456789123放在其开头,计算此MD5哈希,并分配那到te设置为隐藏some_hash值的内容。

然后它执行AJAX查询,将te发送到url-test.com/site脚本。 t网址参数中会发送check,而e POST数据中会发送some_hash

服务器脚本返回一个字符串。如果该字符串与t匹配,则会显示绿色OK。如果他们不匹配,则会显示红色NOT OK

我的猜测是这是CAPTCHA测试的一部分。隐藏输入是指示显示哪个图像的代码。在服务器上,此代码可用于查找图像中文本的MD5哈希值。

答案 1 :(得分:0)

简单地说,Javascript设置3个变量(使用var关键字),然后使用jquery进行HTTPS POST调用。

逐行说明这样的代码:

// Set n to a seemingly arbitrary number
var n = 123456789123;

// Set t to an MD5 hash using n and whatever the value of the "wert" element is
var t = md5(n + " " + $("#wert").val());

// Set e to the value of the element with a name of "some_hash"
var e = $("input[name='some_hash']").val();

// Makes a POST call to a URL built using the above variables
// Format $.post(URL, data(in JSON format), callback function)
$.post(
       "https://url-test.com/site?check=" + t, 
       {some_hash: e}, 
       function(n) {

           // Set the HTML body of the "wert" element
           // If n (returned by the POST call) is equal to t, set font color to green, otherwise set font color to red     
           $("#inputWert").html(n == t ? "<span style='color:green; font-weight:bold'>OK</span>" :
                                         "<span style='color:red; font-weight:bold'>NOT OK</span>")
       }
);

答案 2 :(得分:0)

让我们把你的代码分块:“pincheck”函数从设置三个变量开始:n(123456789123),t。它使用javascript MD5哈希函数,初始字符串为n +一些空格+您在表单上的“wert”字段中输入的任何值。最后,您检索名为“some_hash”的隐藏字段的值并将其存储在变量“e”/
中然后您向服务器发送一个帖子,传递一个键值对“some_hash”(键)和隐藏字段的值。
当post返回时,它调用post语句末尾的匿名函数,将post操作的返回值作为(本地到匿名函数)变量“n”传递。该“n”是与在检查功能开启时定义的变量不同的变量。
然后,匿名函数检查以查看从post操作返回的值是否与使用javascript MD5函数计算的值相同。如果它们相同,则显示第一个span标记,如果它们不相等,则显示第二个span标记。
希望这会有所帮助。