JavaScript字符串加密

JavaScript字符串加密,javascript,arrays,string,algorithm,ecmascript-6,Javascript,Arrays,String,Algorithm,Ecmascript 6,我想使用以下加密方案加密一行文本 这是示例输入。首先,从文本中删除空格 haveaniceday 然后,返回字符串的长度(L=12)。接下来,将字符写入网格,网格的行和列具有以下约束: 字符串的长度将返回L的平方根,该平方根介于3和4之间。因此,重写为3行4列: have anic eday 最后,通过在列中显示字符、插入空格、然后显示下一列并插入空格等方式获得编码消息 例如,上述矩形的编码消息为: hae and via ecy 在我的代码片段中,网格[“have”,“anic”,“ed

我想使用以下加密方案加密一行文本

这是示例输入。首先,从文本中删除空格

haveaniceday
然后,返回字符串的长度
(L=12)
。接下来,将字符写入网格,网格的行和列具有以下约束:

字符串的长度将返回
L
的平方根,该平方根介于
3
4
之间。因此,重写为3行4列:

have
anic
eday
最后,通过在列中显示字符、插入空格、然后显示下一列并插入空格等方式获得编码消息

例如,上述矩形的编码消息为:

hae and via ecy
在我的代码片段中,网格
[“have”,“anic”,“eday”]
已经创建,但我不知道如何实现下一阶段

const s=“havenieday”;
让结果=加密;
函数加密{
设sqr=Math.sqrt(s.length),
col=数学单元(sqr),
行=数学楼层(sqr);
设chunks=chunkSubstr(s,col);
//=>[“have”、“anic”、“eday”]
console.log(块);
for(var i=0;i
easy=>最后是array.joint(“”),还有一个双循环

const s=“havenieday”;
让结果=加密;
console.log('result=',result);
函数加密{
允许
sqr=数学sqrt(s.长度),
col=数学单元(sqr),
行=数学楼层(sqr)
;
设chunks=chunkSubstr(s,col);
//=>[“have”、“anic”、“eday”]
让response=[];

对于(设i=0,iMax=chunks[0]。length;i您可以通过循环col的计数来获取块中的每个字符

const s=“havenieday”;
让结果=加密;
函数加密{
设sqr=Math.sqrt(s.length),
col=数学单元(sqr),
行=数学楼层(sqr);
设chunks=chunkSubstr(s,col);
//=>[“have”、“anic”、“eday”]
console.log(块);
让输出=“”;
对于(var i=0;i{
if(e[i]){
输出+=e[i];
}
});
输出+='';
}
控制台日志(输出);
}
函数chunkSubstr(str,size){
const numChunks=Math.ceil(str.length/size)
常量块=新数组(numChunks)
for(设i=0,o=0;i
const s=“havanieday”;
让结果=加密;
函数加密{
设sqr=Math.sqrt(s.length),
col=数学单元(sqr),
行=数学楼层(sqr);
设chunks=chunkSubstr(s,col);
//=>[“have”、“anic”、“eday”]
console.log(块);
var结果=[];
for(var i=0;i
您可以在另一个数组中使用数组
[“have”“anic”“eday”]
字符串的长度。对于原始数组的每三个成员,您将其所有字符映射到新数组中

const original=[“have”、“anic”、“eday”];
常量输出=原始。减少((输出,字)=>{
word.split(“”//拆分为字符[]
.forEach((字符,i)=>
out[i]+=char//将此字符附加到相应的'out'字符串中`
);
返回;
},新数组(原始[0]。长度)。填充(“”))/[“”,“”,“”,“”,“”]

console.log(output.join(“”));
停止将编程视为魔术:现在您需要从第一个“单词”中提取第一个字符,然后从第二个“单词”中提取第一个字符,…,然后从第一个“单词”中提取第二个字符,等等。他们想要
“hae and via ecy”
而不是
“have anic eday”
    const s = "haveaniceday";
    let result = encryption(s);

    function encryption(s) {

      let sqr = Math.sqrt(s.length),
        col = Math.ceil(sqr),
        row = Math.floor(sqr);

      let chunks = chunkSubstr(s, col);
      // => ["have", "anic", "eday"]
      console.log(chunks);
      var result = [];
      for (var i = 0; i < chunks.length; i++) {
        // do some magic here...      
        // expected output: "hae and via ecy"

         var split =  Array.from(chunks[i]);
         for (var s = 0; s < split.length; s++) {

            var previousValue = '';
            if(result[s])
             { previousValue = result[s];}

            result[s]=previousValue + split[s];
    }


      }

console.log(result);

    }


    function chunkSubstr(str, size) {
      const numChunks = Math.ceil(str.length / size)
      const chunks = new Array(numChunks)

      for (let i = 0, o = 0; i < numChunks; ++i, o += size) {
        chunks[i] = str.substr(o, size)
      }

      return chunks
    }