1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
FIT1047-crypt/crypt.js
2018-04-11 21:33:40 +10:00

97 lines
2.8 KiB
JavaScript

function get_key() {
var map = [];
for (let i = 0; i < 26; i++) {
map.push($("#" +String.fromCharCode(i + 65)).val());
}
for (let i = 0; i < map.length; i++) {
if (!(typeof map[i] === 'string' || map[i] instanceof String) || map[i].length < 1) {
map[i] = String.fromCharCode(i + 65);
} else {
const code = map[i].charCodeAt(0);
if (map[i].length > 1) {
map[i] = map[i][0];
$("#" +String.fromCharCode(i + 65)).val(map[i][0]);
} else if (code >= 65 && code <= 90) {
map[i] = String.fromCharCode(code + 32);
}
}
}
return map;
}
function encrypt(plaintext, key) {
var encrypted = "";
var text = plaintext.toUpperCase();
for (let i = 0; i < text.length; i++) {
const code = text.charCodeAt(i);
if (code >= 65 && code <= 90) {
encrypted += key[code - 65];
} else {
encrypted += text[i];
}
}
return encrypted;
}
function decrypt(encrypted, key) {
var plaintext = "";
var text = encrypted.toLowerCase()
for (let i = 0; i < text.length; i++) {
var loc = key.indexOf(text[i]);
const code = text.charCodeAt(i);
if (loc >= 0) {
plaintext += String.fromCharCode(loc + 97);
} else if (97 <= code && code <= 122) {
plaintext += String.fromCharCode(code - 32);
} else {
plaintext += text[i];
}
}
return plaintext;
}
$(document).ready(function() {
$("#encrypt").button().click(function(){
var key = get_key();
var text = $("#plain-text").val();
$("plain-text").val(text.toLowerCase());
var encrypted = encrypt(text, key);
$("#encrypted-text").val(encrypted);
});
$("#decrypt").button().click(function(){
var key = get_key();
var text = $("#encrypted-text").val();
$("#encrypted-text").val(text.toLowerCase());
var decrypted = decrypt(text, key);
$("#plain-text").val(decrypted);
});
$("#generate-alpha").button().click(function(){
var key = get_key();
var alpha = "";
for (let i = 0; i < key.length; i++) {
alpha += key[i];
}
$("#alphabet").val(alpha);
});
$("#import-alpha").button().click(function(){
var alpha = $("#alphabet").val();
if (alpha.length != 26) {
alert("Alphabet of invalid length");
return;
}
alpha = alpha.toUpperCase();
for (let i = 0; i < alpha.length; i++) {
const code = alpha.charCodeAt(i);
if (code != i + 65) {
$("#" +String.fromCharCode(i + 65)).val(alpha[i]);
}
}
});
});