22,209
社区成员
发帖
与我相关
我的任务
分享
Official Secret Act
O a r t
f i l c e c
f c . e t A
i S .
Oartfilcecfc etAiS
Official Secret Act
O c . r A
f i i l S c e . c
f a e t t
var key = 'abcdefg, hijklmn, opq, rst, uvw, xyz. xyz, now you see, I can say my abc.';
function encode(key,layer){
var arr = [];
for(var i=0;i<layer;i++){
arr.push(new Array(key.length));
};
for(var i=0;i<key.length;i++){
var m = i%((layer-1)*2);
var l = m < layer ? i%((layer-1)*2) : (layer-1)*2-i%((layer-1)*2);
arr[l][i]=key[i];
}
var result = '';
for(var i=0;i<arr.length;i++){
result += arr[i].join('');
}
return result;
}
function decode(key,layer){
var arr = [];
for(var i=0;i<layer;i++){
arr.push(new Array(key.length));
};
for(var i=0;i<key.length;i++){
var m = i%((layer-1)*2);
var l = m < layer ? i%((layer-1)*2) : (layer-1)*2-i%((layer-1)*2);
arr[l][i]='fill';
}
for(var i=0;i<key.length;i++){
var z = 0;
for (var x=0;x<arr.length ;x++ )
{
var c = false;
for(var y=0;y<arr[x].length;y++){
if (arr[x][y])
{
if (z==i)
{
arr[x][y] = key[i];
c = true;
break;
}
z++;
}
}
if (c)
{
break;
}
}
}
var r = ''
for(var i=0;i<key.length;i++){
var m = i%((layer-1)*2);
var l = m < layer ? i%((layer-1)*2) : (layer-1)*2-i%((layer-1)*2);
r+=arr[l][i];
}
return r;
}
alert(encode(key,6));
alert(decode(encode(key,6),6));
用js做了个加密解密的互逆运算方法,需要带层深参数