const String PLAIN_TEXT = "ppgrocy.ddns.info,211,login,Password,/path/";
const String KEY = "SlEPYCE";
void setup() {
Serial.begin(9600);
String encryption_result = vigenere_cipher(PLAIN_TEXT, KEY, true);
String decryption_result = vigenere_cipher(encryption_result, KEY, false);
Serial.print("Plain Text: ");
Serial.println(PLAIN_TEXT);
Serial.print("Encryption: ");
Serial.println(encryption_result);
Serial.print("Decryption: ");
Serial.println(decryption_result);
Serial.println();
}
void loop() {}
String vigenere_cipher(String text, String key, bool is_encryption) {
String result;
int ascii, text_index, key_index, result_index;
char character;
for(int i = 0; i < text.length(); i++) {
ascii = (int)text[i];
if(ascii >= 64) {
text_index = ((int)text[i] % 32) - 1;
key_index = ((int)key[i % key.length()] % 32) - 1;
if(is_encryption)
result_index = (text_index + key_index) % 26;
else
result_index = (text_index - key_index + 26) % 26;
if(ascii >= 'a')
character = result_index + 'a';
else
character = result_index + 'A';
} else
character = ascii;
result += character;
}
return result;
}