我正在开发一个非常简单的加密程序。我从输入消息,密码,输出和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>
当我按下按钮加密时,会发生这种情况:
第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'成为输出。我不知道该怎么做。无论如何,我认为自己是初学者,所以如果解决方案显而易见,我会道歉。
答案 0 :(得分:-1)
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;