我有一个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();
}
}
如何解决这个问题以找出它想要的号码? 不用担心,它是我工作中的黑客游戏:)
答案 0 :(得分:3)
做数学。代码是一种非常难看的创建位掩码的方法:
0b0001110010001010是目标号码,即7306。
编辑:然后,代码也将接受0b10001110010001010,即72842.此算法可接受任何指定低15位的数字。
答案 1 :(得分:0)
只需进行所有数学运算并将其反转,注意保持运算顺序正确。
请注意,在某些情况下,存在陷门算法,其中一个输出具有多个潜在输入。在这种情况下,实际上不可能反转它们,尽管你仍然可以找到一个潜在的解决方案。