ROSECODE 290
解码这段 JavaScript
Decode it (javascript)
原题的交互功能已停用;现存程序以代码文本保留。
function func()
{
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var A=parseInt(myform.myinput.value);
var K=404;
var KK=K*K;
var AA=A*A;
var encodedText = document.getElementById('encoded_text').innerHTML;
var outputDiv = document.getElementById("outputDiv");
outputDiv.innerHTML = "<pre\>";
if (A<=0) {
alert("Should be >0");
} else {
outputDiv.innerHTML += "<font size=+2 \><b\>Key="+A+"</b\></font\><br\><br\>";
// K*A^2+K*x-A-x^2=0 : x^2-Kx+A-KA^2=0
var delta=Math.sqrt(KK+4*(AA-1)*K);
var x=Math.floor((K+delta)/2);
for(var ii=-1; ii<2; ++ii){
var t=x+ii;
var tt=t*t;
var z1=K*(AA+t), z2=(tt+A);
if (z1==z2){
var arr=new Array();
var i=0, keylen=0, s=t, cd=0;
while (s>0) {
arr[keylen++]=s%10;
s=Math.floor(s/10);
}
outputDiv.innerHTML += "Decoded: ";
var j=keylen, k=0;
for(i=0; i<encodedText.length; ++i) {
var inx=keyStr.indexOf(encodedText.charAt(i));
if(inx<0) continue;
if(--j<0)
j+=keylen;
inx-=arr[j];
if (inx<0)
inx+=64;
outputDiv.innerHTML += keyStr.charAt(inx);
if(i>0 && (i&63)==0)
outputDiv.innerHTML += "<br\>";
cd+=k++*keyStr.charCodeAt(inx);
}
if (cd==360117)
outputDiv.innerHTML += "<br\><br\><font color=\"green\"/>Decoded successfully.</font/><br\>";
else
outputDiv.innerHTML += "<br\><br\><font color=\"red\"/>Decoded something but it doesn't seem to be OK.</font/><br\>";
break;
}
}
outputDiv.innerHTML += "<br\>";
if (ii==2)
outputDiv.innerHTML += "<br\><font color=\"red\"/>Not a key!</font/><br\>";
}
outputDiv.innerHTML += "</pre\>";
}
X5dzkDFkg5BnNUEchPVkYb87f7X1QNu0MDR6U1pzQLjCPHUlNPT0KJRsRHZu iJd0eYTohf5kbLA/bcLmgeWmMGmomEpC |
| 输入密钥进行解码。
关键=
myinput = 0
|
|
|