← RoseCode

ROSECODE 295

Decode it 2 (javascript)

sinan · Crypto ·

The original interaction is no longer available. Any surviving program is preserved as source code.

function func()
{
	var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	var Key=parseInt(myform.myinput.value);
	var encodedText = document.getElementById('encoded_text').innerHTML;
	var outputDiv = document.getElementById("outputDiv");
	outputDiv.innerHTML = "<pre\>";
	if (Key<=0) {
		alert("Should be >0");
	} else {
		var arr=new Array();
		var i=0, keylen=0, s=Key, cd=0;
		while (s>0) {
			arr[keylen++]=s%10;
			s=Math.floor(s/10);
		}
		if(keylen!=8) {
			alert("key should be 8 digits long");
		} else {
			outputDiv.innerHTML += "<font size=+2 \><b\>Key="+Key+"</b\></font\><br\><br\>";
			var inx=keylen;
			while (1) {
				for (i=s=0; i<keylen; ++i) s+=arr[i];
				if (--inx<0) inx+=keylen;
				arr[inx]=s;
				if (s==Key) {
					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]&63;
						if (inx>=64)
							inx-=64;
						outputDiv.innerHTML += keyStr.charAt(inx);
						if(i>0 && (i&63)==0)
							outputDiv.innerHTML += "<br\>";
						cd+=++k*keyStr.charCodeAt(inx);
					}
					if (cd==281077)
						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;
				} else if (s>Key) {
					outputDiv.innerHTML += "<br\><br\><font color=\"red\">Not a key!</font><br\>";
					break;
				}
			}
		}
		outputDiv.innerHTML += "<br\>";
	}
	outputDiv.innerHTML += "</pre\>";
}

4pxLgKsp+pVENasG+apWefzl9Ko/RbD7vGgUTbz7wm8UTb3lt5xNiOA3r5hS
NOc0ApxRd+w48FdHefLu
Enter the key to decode it.
Key = myinput = 0