AFON // радиотехник affonya@mail.ru
← Все проекты JavaScript

Шифр Цезаря

Шифр сдвига для латинских букв.

JS.14 · Строки

Задача

Зашифровать текст сдвигом и расшифровать обратным сдвигом.

Алгоритм

replace с регуляркой обрабатывает каждую букву, сдвигая её код по кольцу из 26 символов.

Исходный код

⇩ Скачать 14-shifr-cezarya.js

// Шифр Цезаря
function caesar(s, k) {
  return s.replace(/[a-z]/gi, c => {
    const base = c <= 'Z' ? 65 : 97;
    return String.fromCharCode((c.charCodeAt(0) - base + k + 2600) % 26 + base);
  });
}

const enc = caesar('Hello, Radio', 3);
console.log('шифр:  ', enc);
console.log('дешифр:', caesar(enc, -3));

Пояснения

Добавка 2600 (кратна 26) держит аргумент остатка положительным при отрицательном сдвиге.