25 lines
620 B
JavaScript
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);
|