JavaScript

Шифровальщик текста на js

Хочу написать шифровальщик, примерно понимаю как это сделать, но чтобы не придумывать велосипед решил спросить как сделать грамотней. У меня есть строка, как ее преобразовывать? Насколько знаю, я могу обратится к элементу строки по индексу, и сравнить его с каждым элементом заданного массива, а потом просто к счетчику прибавлять число и делать всяческие манипуляции, это так нужно делать или есть способ получше? Заранее спасибо!
AB
Azamat Bayazitov
6 773
Самый простой вариант, если говорить о шифровке с нуля, это создать объект, где у каждого символа-ключа будет свое значение. Можно усложнить, если это значение будет случайно выбираться из массива значений.

После прогоняешь строку, разбитую на массив, через два цикла - первый по массиву, второй по объекту... если ключ и элемент массива совпадают, значение в массиве заменяется на значение из объекта. Сложнее, это придумать, как после шифровки правильно считывать зашифрованную строку, ибо просто разбить на составляющие уже не получится и придется каждый символ проверять на соответствие всем возможным комбинациям шифровок.
Ержан Мади
Ержан Мади
63 613
Лучший ответ
Azamat Bayazitov Спасибо за ответ. Думаю не буду заморачиваться, просто буду сдвигать по ключу прибавлять умножать и т.д.
Для начала, вам нужно определиться с алгоритмом шифрования. Одним из самых простых является шифр Цезаря, который заключается в сдвиге каждой буквы в строке на определенное количество позиций в алфавите (например, на 3 позиции вправо).

Чтобы реализовать шифр Цезаря, вам нужно определить переменную, которая будет содержать количество позиций для сдвига. Далее, вы можете использовать цикл for для перебора каждого символа в строке. Внутри цикла, вы можете получить код ASCII текущего символа и сдвинуть его на нужное количество позиций. Затем, вы можете преобразовать полученный код обратно в символ и добавить его к зашифрованной строке.

Вот пример кода:

function caesarCipher(str, shift) {
let result = '';
for (let i = 0; i < str.length; i++) {
let charCode = str.charCodeAt(i);
if (charCode >= 65 && charCode <= 90) {
result += String.fromCharCode(((charCode - 65 + shift) % 26) + 65);
} else if (charCode >= 97 && charCode <= 122) {
result += String.fromCharCode(((charCode - 97 + shift) % 26) + 97);
} else {
result += str.charAt(i);
}
}
return result;
}

let encrypted = caesarCipher('Hello, world!', 3);
console.log(encrypted); // "Khoor, zruog!"

В этом примере, функция `caesarCipher` принимает два аргумента: строку, которую нужно зашифровать (`str`) и количество позиций для сдвига (`shift`). В цикле for мы перебираем каждый символ в строке, получаем его код ASCII и сдвигаем на нужное количество позиций. Затем, мы преобразовываем полученный код обратно в символ и добавляем его к зашифрованной строке `result`.

Надеюсь, этот пример поможет вам написать свой собственный шифровальщик на JavaScript!
АИ
Антон Исаев
19 655
 // Объявляем функцию `encrypt`, которая принимает текст и количество позиций сдвига 
function encrypt(text, shift) {
// Инициализируем переменную `result` пустой строкой
let result = "";
// Проходимся циклом по каждому символу текста
for (let i = 0; i < text.length; i++) {
// Получаем числовой код текущего символа
let charCode = text.charCodeAt(i);
// Если символ является заглавной буквой английского алфавита (A-Z)
if (charCode >= 65 && charCode = 97 && charCode