我正在研究一个使用以下脚本的代码拼图:
function(ascii,a,b,c) {
for(i=0;i<ascii.length;i++) {
if(i%3==0){ascii[i]=(ascii[i]+a)%256;}
if(i%3==1){ascii[i]=(ascii[i]+b)%256;}
if(i%3==2){ascii[i]=(ascii[i]+c)%256;}
}
return ascii;
}
我认为它说:'对于消息中的每个字符(或者如果消息是一个数组,则对于数组中的每个元素 i),计算其位置 mod3,并根据结果添加 a、b 或 c转换为字符的 ascii 值,然后返回该值 mod 256。这是正确的解释吗?
它似乎是一个编码函数
,它采用代表字符(0-255)
的数字数组
。然后通过按 3 进行取模,将字符移动按照 a、b 和 c 指定的长度
。然后输出被修改为 255
,因此它仍然是一个有效的字符值。最后返回编码结果代表字符的数字数组
。
下面是代码:
function encodeIt(ascii,a,b,c) {
for(i=0;i<ascii.length;i++) {
if(i%3==0){ascii[i]=(ascii[i]+a)%256;}
if(i%3==1){ascii[i]=(ascii[i]+b)%256;}
if(i%3==2){ascii[i]=(ascii[i]+c)%256;}
}
return ascii;
}
function encodeString(myString,myAdjustments)
{
var myArray = [];
for(var i=0;i<myString.length;i++)
{
myArray.push(myString.charCodeAt(i));
}
var myArray = encodeIt(myArray,myAdjustments[0],myAdjustments[1],myAdjustments[2]);
var myEncodedString = "";
for(var i=0;i<myArray.length;i++)
{
myEncodedString+=String.fromCharCode(myArray[i]);
}
return myEncodedString;
}
var encodedString = encodeString("Hello World!",[30,80,-13]);
alert(encodedString);
var decodedString = encodeString(encodedString,[-30,-80,13]);
alert(decodedString);
还有 fiddle :
https://jsfiddle.net/3p79bxv2/
我是一名优秀的程序员,十分优秀!