Okorosso

Vigneer

Apr 21st, 2021
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. // солнышко. извини мозг вообще уже не варит, я завтра разберусь по-новой и обязательно расскажу :*
  7. string vig(string &k) { // хуй знает, но очень похоже, что тут мы ебемся над ключем...
  8.     string kk;
  9.     for (int i = 0; i < k.size(); ++i) {
  10.         if (k[i] >= 'A' && k[i] <= 'Z')
  11.             kk += k[i];
  12.         else if (k[i] >= 'a' && k[i] <= 'z')
  13.             kk += k[i] + 'A' - 'a';
  14.     }
  15.     return kk;
  16. }
  17.  
  18. string encrypt(string t,
  19.                string k) { // Тут мы шифруем строку, я посмотрел в том, что ты скинула, там не паряться сильно над
  20.     // шированием пробелов, поэтому я тоже поклал хуй на это, и встречая пробел просто его добавляю
  21.     // Потом какая-то магическая хуйня над номерами букв в таблице ascii
  22.     string output;
  23.     for (int i = 0, j = 0; i < t.length(); ++i) {
  24.         char chr = t[i];
  25.         if (chr == ' ') {
  26.             output += ' ';
  27.             continue;
  28.         }
  29.         if (chr >= 'a' && chr <= 'z')
  30.             chr += 'A' - 'a';
  31.         else if (chr < 'A' || chr > 'Z')
  32.             continue;
  33.         output += (chr + k[j] - 2 * 'A') % 26 + 'A';
  34.         j = (j + 1) % k.length();
  35.     }
  36.     return output;
  37. }
  38.  
  39. string decryption(string t, string k) { // аналогично шифрованию, только обратное
  40.     string output;
  41.     for (int i = 0, j = 0; i < t.length(); ++i) {
  42.         char chr = t[i];
  43.         if (chr == ' ') {
  44.             output += ' ';
  45.             continue;
  46.         }
  47.         if (chr >= 'a' && chr <= 'z')
  48.             chr += 'A' - 'a';
  49.         else if (chr < 'A' || chr > 'Z')
  50.             continue;
  51.         output += (chr - k[j] + 26) % 26 + 'A';
  52.         j = (j + 1) % k.length();
  53.     }
  54.     return output;
  55. }
  56.  
  57.  
  58. int main() {
  59.     string key, str;
  60.     cout << "pls, enter str to encrypt:\n";
  61.     getline(cin, str);
  62.     cout << "pls, enter key:\n";
  63.     getline(cin, key);
  64.  
  65.     string new_key = vig(key);
  66.     string encrypted = encrypt(str, new_key);
  67.     string decrypt = decryption(encrypted, new_key);
  68.  
  69.     cout << "Original Message: " << str << endl;
  70.     cout << "Encrypted Message: " << encrypted << endl;
  71.     cout << "Decrypted Message: " << decrypt << endl;
  72. }
Add Comment
Please, Sign In to add comment