#include <Arduino.h>
const int a = 5; // Ключ шифрования
const int b = 8; // Смещение
void setup() {
Serial.begin(9600); // Инициализация последовательного порта
Serial.println("Введите текст для шифрования:");
}
void loop() {
if (Serial.available()) {
String input = Serial.readStringUntil('\n'); // Чтение строки из монитора порта
String encrypted = affineEncrypt(input); // Шифрование строки
Serial.println("Зашифрованный текст:");
Serial.println(encrypted); // Вывод зашифрованной строки
}
}
String affineEncrypt(String text) {
String result = "";
for (int i = 0; i < text.length(); i++) {
char c = text[i];
if (isAlpha(c)) { // Проверяем, является ли символ буквой
char base = isUpperCase(c) ? 'A' : 'a'; // Определяем базу для верхнего/нижнего регистра
int P = c - base; // Преобразуем символ в число (A=0, B=1, ..., Z=25)
int C = (a * P + b) % 26; // Применяем аффинное преобразование
result += char(C + base); // Преобразуем обратно в символ и добавляем к результату
} else {
result += c; // Не изменяем пробелы и другие символы
}
}
return result;
}