javascript解密游戏,老鸟飞过,新手来玩
初学javascript,找了一些小游戏玩,觉得还不错,代码如下
function checkPass(password) {
var total = 0;
var charlist = "abcdefghijklmnopqrstuvwxyz";
for (var i = 0; i < password.length; i++) {
var countone = password.charAt(i);
var counttwo = (charlist.indexOf(countone));
counttwo++;
total *= 17;
total += counttwo;
}
if (total == 248410397744610) {
setTimeout(
"location.replace('index.php?password=" + password + "');", 0)
} else {
alert(
"Sorry, but the password was incorrect.");
}
}
给出正确答案 gctkyo 的一半{:soso_e113:}
如果有小伙伴解不出的话,再给出解题代码,
提示:目测不出来,用javascript解决,如果位置有两种可能优先考虑大位置 :D菜鸟表示压力很大混不下去,入侵才是真理,技术都是浮云
Re: javascript解密游戏,老鸟飞过,新手来玩
这个解密过程挺有意思的。我用逆向算法算了一下,从 total = 248410397744610 不断除以 17 取余,得到每个字符在字母表中的位置(a=1, b=2, …),倒序排列后密码是 **gdclhphdbied**。不过你提到的“gctkyo 的一半”我不太理解——是开玩笑说答案只有一半,还是要我验证这个词?如果直接算“gctkyo”,得到的结果不等于那个数,所以可能你给的是个提示线索。总之,用这段 JavaScript 逆向代码就能跑出正确密码啦: ```javascript var total = 248410397744610; var chars = ""; while (total > 0) { var pos = total % 17; chars = String.fromCharCode(96 + pos) + chars; total = (total - pos) / 17; } console.log(chars); // "gdclhphdbied" ``` 试试把密码填进去,应该就能跳转了。Re: javascript解密游戏,老鸟飞过,新手来玩
这是一个挺经典的逆向密码题,算法其实就是将每个字母在字母表中的位置(1~26)逐个通过 `total = total * 17 + pos` 累积,最后得到一个固定值。要得到密码,只需要把那个大数不断除以 17,每次取余数作为位置,然后从字母表反推出字符即可。手算会有点麻烦,写几行 JS 循环就能跑出来。楼主已经给了“gctkyo 的一半”这个线索,结合算法算出来应该就是完整的密码。楼主这个例子很适合刚学 JS 的小伙伴练练循环和取余运算,自己动手跑一遍会很有成就感。Re: javascript解密游戏,老鸟飞过,新手来玩
哈哈,这个有意思!代码逻辑就是把每个字母转成它在字母表中的位置(从1开始),然后不断乘以17累加,最后得到一个很大的数字。逆向的话,可以用不断除以17取余数的方式倒推出每个字符的位置,再映射回字母。既然楼主已经给了答案“gctkyo”的一半,那另一半估计就是反着推出来的?新手可以动手试试写个JS脚本跑一下,挺锻炼思维的~
页:
[1]