Skip to content

Instantly share code, notes, and snippets.

@lgg
Last active June 11, 2016 22:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lgg/ccf01d4f0f6426ff0130902f3206673c to your computer and use it in GitHub Desktop.
Save lgg/ccf01d4f0f6426ff0130902f3206673c to your computer and use it in GitHub Desktop.
caesar cipher in js
Исходное сообщение:
<br /><input type='text' id='message'>
<br /><br />
Сдвиг (число):<input type='text' id='shift' value='3'>
<br /><br />
<button onclick='encrypt()'>Зашифровать</button>
<br /><br />
<button onclick='decrypt()'>Расшифровать</button>
<br /><br />
Зашифрованное сообщение: <br />
<input type='text' id='cipher'>
var alphabet = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; //исходный алфавит
//функция, сдвигающая алфавит на количество букв shift
function shiftAlphabet(shift) {
console.log(shift)
var shiftedAlphabet = ''; //новый алфавит
for (var i = 0; i < alphabet.length; i++) {
//console.log(i, alphabet[i+shift]);
currentLetter = (alphabet[i + shift] === undefined) ? (alphabet[i + shift - alphabet.length]) : (alphabet[i + shift]); //Текущая буква со сдвигом, если выходим за рамки длины алфавита - берем с начала алфавита
shiftedAlphabet = shiftedAlphabet.concat(currentLetter);
}
return shiftedAlphabet;
}
console.log(shiftedAlphabet);
function encrypt() {
var message = document.getElementById('message').value;
var shift = parseInt(document.getElementById('shift').value);
var shiftedAlphabet = shiftAlphabet(shift);
var encryptedMessage = '';
for (var i = 0; i < message.length; i++) {
var indexOfLetter = alphabet.indexOf(message[i].toUpperCase());
encryptedMessage = encryptedMessage.concat(shiftedAlphabet[indexOfLetter]);
}
document.getElementById('cipher').value = encryptedMessage.toLowerCase();
}
function decrypt() {
var message = document.getElementById('message').value;
var shift = parseInt(document.getElementById('shift').value);
var shiftedAlphabet = shiftAlphabet(shift);
var encryptedMessage = '';
for (var i = 0; i < message.length; i++) {
if (message[i] == ' ') {
encryptedMessage = encryptedMessage.concat(' ');
continue};
var indexOfLetter = shiftedAlphabet.indexOf(message[i].toUpperCase());
var encryptedLetter = alphabet[indexOfLetter];
if(encryptedLetter === undefined){
encryptedMessage = encryptedMessage.concat(message[i]);
}else{
encryptedMessage = encryptedMessage.concat(alphabet[indexOfLetter]);
}
}
document.getElementById('cipher').value = encryptedMessage.toLowerCase();
}
#message, #cipher{
width:500px;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment