Javascript反向验证输入代码?

时间:2013-12-19 10:00:23

标签: javascript

我有一个javascript,用于检查是否放入了某个4位数代码:

verify = function (num, success) {

    if (true && (num & Math.pow(2, 0)) == 0 && (num & Math.pow(2, 1)) != 0 && (num & Math.pow(2, 2)) == 0 && (num & Math.pow(2, 3)) != 0 && (num & Math.pow(2, 4)) == 0 && (num & Math.pow(2, 5)) == 0 && (num & Math.pow(2, 6)) == 0 && (num & Math.pow(2, 7)) != 0 && (num & Math.pow(2, 8)) == 0 && (num & Math.pow(2, 9)) == 0 && (num & Math.pow(2, 10)) != 0 && (num & Math.pow(2, 11)) != 0 && (num & Math.pow(2, 12)) != 0 && (num & Math.pow(2, 13)) == 0 && (num & Math.pow(2, 14)) == 0 && (num & Math.pow(2, 15)) == 0) {
        setTimeout(success, 1000);
    } else {
        location.reload();
    }

}

如何解决这个问题以找出它想要的号码? 不用担心,它是我工作中的黑客游戏:)

2 个答案:

答案 0 :(得分:3)

做数学。代码是一种非常难看的创建位掩码的方法:

0b0001110010001010是目标号码,即7306。

编辑:然后,代码也将接受0b10001110010001010,即72842.此算法可接受任何指定低15位的数字。

答案 1 :(得分:0)

只需进行所有数学运算并将其反转,注意保持运算顺序正确。

请注意,在某些情况下,存在陷门算法,其中一个输出具有多个潜在输入。在这种情况下,实际上不可能反转它们,尽管你仍然可以找到一个潜在的解决方案。