RosettaCodeData/Task/Vigen-re-cipher/JavaScript/vigen-re-cipher.js

25 lines
620 B
JavaScript

// helpers
// helper
function ordA(a) {
return a.charCodeAt(0) - 65;
}
// vigenere
function vigenere(text, key, decode) {
var i = 0, b;
key = key.toUpperCase().replace(/[^A-Z]/g, '');
return text.toUpperCase().replace(/[^A-Z]/g, '').replace(/[A-Z]/g, function(a) {
b = key[i++ % key.length];
return String.fromCharCode(((ordA(a) + (decode ? 26 - ordA(b) : ordA(b))) % 26 + 65));
});
}
// example
var text = "The quick brown fox Jumped over the lazy Dog the lazy dog lazy dog dog";
var key = 'alex';
var enc = vigenere(text,key);
var dec = vigenere(enc,key,true);
console.log(enc);
console.log(dec);