解密加密的消息(我加密)

时间:2017-05-07 18:25:18

标签: javascript arrays encryption

我正在开发一个非常简单的加密程序。我从输入消息,密码,输出和2个按钮开始。

<input type="text" id="message"></input><br>
<input type="text" id="password"></input>
<p id="encrypted"></p>

<button class="trans" id="button-encrypt">encrypt!</button>
<button class="trans" id="button-decrypt">decrypt!</button>

当我按下按钮加密时,会发生这种情况:

  1. 捕获密码字符串并将其转换为数字
  2. 该数字用于生成26个字母的数组
  3. 将消息中的字母映射到数组(称为mapArray)
  4. 第3步看起来像这样:

        var mapToMapArray = {
          a: mapArray[0], b: mapArray[1], c: mapArray[2]...
        };
    
        //this code courtesy of another user from here on stackoverflow
        encryptedEl.innerHTML = messageEl.split("").map((letter) => mapToMapArray[letter] || letter).join("");
    

    基本上,当我点击加密按钮时,输出是乱码。根据我输入的密码,这种乱码是不同的。例如,如果我输入'hank'作为消息并输入'abcde'作为密码,则输出为'afbz'。如果我输入'hank'作为消息而'pine'作为密码,'yvza'就是输出。

    问题:

    现在我想要的是在我点击解密按钮时反转过程。如果我输入密码为'pine'的'yvza',我希望'hank'成为输出。我不知道该怎么做。无论如何,我认为自己是初学者,所以如果解决方案显而易见,我会道歉。

1 个答案:

答案 0 :(得分:-1)

&#13;
&#13;
var message = document.getElementById("message"),
    password = document.getElementById("password"),
    encrypted = document.getElementById("encrypted"),
    decrypted = document.getElementById("decrypted"),
    output = document.getElementById("output");
function loop(array, callback) {
    var len = array.length,
      index;
    for (index = len - 1; index >= 0; index -= 1) {
      callback.call(index, array[index], index);
    }
 }
encrypted.addEventListener("click", function(){
  if(message.value!="" && password.value!=""){
    var passi = 0;
    var ec = message.value.replace(/[\w|\W]/g, function(a){
      var pv = password.value[passi].charCodeAt(0);
      passi+=1;
      if(passi>=password.value.length){
        passi=0;
      }
      var av = a.charCodeAt(0);
      return String.fromCharCode(pv+av);
    });
    output.value = btoa(ec);
  }
});
decrypted.addEventListener("click", function(){
  if(output.value!="" && password.value!=""){
    var passi = 0;
    var dc = atob(output.value).replace(/[\w|\W]/g, function(a){
      var pv = password.value[passi].charCodeAt(0);
      passi+=1;
      if(passi>=password.value.length){
        passi=0;
      }
      var av = a.charCodeAt(0);
      return String.fromCharCode(av-pv);
    });
    output.value = dc;
  }
});
&#13;
<input placeholder="message" id="message" value="abcdefg">
<input placeholder="password" id="password" value="123">
<br>
<button id="encrypted">encrypted</button>
<button id="decrypted">decrypted</button>
<br>
<input placeholder="output" id="output">
&#13;
&#13;
&#13;