如何在Javascript上

时间:2018-01-19 16:57:22

标签: javascript encryption

最近,我一直在研究一段代码,只要用户拥有正确的自定义密钥,就可以加密字母并对其进行解密。我知道如何做到这一点,但对于我想要添加的每一封信,我都要提出:

  if ( map.hasOwnProperty(input[0]) ) 
{
 var _1 = map[input[0]]    
}

然后在结束时:

 var encrypted = (_1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _10 + _11 + _12 + _13 + _14 + _15 + _16 + _17 + _18 + _19 + _20 + _21 + _22 + _23 + _24 + _25 + _26 + _27 + _28 + _29 + _30 + _31 + _32 + _33 + _34 + _35 + _36 + _37 + _38 + _39 + _40 + _41 + _42 + _43 + _44 + _45 + _46 + _47 + _48 + _49 + _50 + _51 + _52 + _53 + _54)   

我输入了很多信件。

只有3个字母的简化版代码是:

var map = {
  "a" : "A",
  "b" : "B",
  "c" : "C",
  "d" : "D",
  "e" : "E",
  "f" : "F",
  "g" : "G",
  "h" : "H",
  "i" : "I",
  "j" : "J",
  "k" : "K",
  "l" : "L",
  "m" : "M",
  "n" : "N",
  "o" : "O",
  "p" : "P",
  "q" : "Q",
  "r" : "R",
  "s" : "S",
  "t" : "T",
  "u" : "U",
  "v" : "V",
  "w" : "W",
  "x" : "X",
  "y" : "Y",
  "z" : "Z",
  " " : " "
}

function main() 
{
 var input = prompt("Enter a character!");
 var encrypted = -1;

  if ( map.hasOwnProperty(input[0]) ) 
{
 var _1 = map[input[0]]    
}
  if ( map.hasOwnProperty(input[1]) ) 
{
 var _2 = map[input[1]]    
}
  if ( map.hasOwnProperty(input[2]) ) 
{
 var _3 = map[input[2]]    
}

 var encrypted = (_1 + _2 + _3)   
document.write(encrypted);
}  
main()

(地图只是为了简单起见,因为它在完整代码中稍微复杂一点)

有没有办法可以访问尽可能多的字母,以简化代码?

1 个答案:

答案 0 :(得分:1)

你可以使用循环来做这种事情。这是一个例子:

var map = {" " : " "};
for(var i = 0; i < 25; i++){
   map[String.fromCharCode(97 + i)] = String.fromCharCode(65 + i);
}

function main() {
    var input = prompt("Enter a character!");
    var encrypted = "";
    for(var i = 0; i < input.length; i++){
       if(map[input[i]]){
          encrypted += map[input[i]];
       }
    } 
    document.write(encrypted);
}  
main();