Guest User

Untitled

a guest
Dec 11th, 2019
105
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string>
  3. #include "14.1.h"
  4.  
  5. using namespace std;
  6.  
  7.  
  8. void caiser()
  9. {
  10. string s; // строка
  11. int key; // ключ шифра Цезаря
  12.  
  13. cout << "Enter a string > ";
  14. cin >> s; // вводим строку
  15.  
  16. cout << "Enter a key for first crypt (1-25) > ";
  17. cin >> key; // вводим ключ
  18.  
  19. for (int i = 0; i < s.length(); i++)
  20. {
  21. s[i] += key; // шифруем! к символу можно добавлять целое число
  22. }
  23.  
  24. cout << "\nEncrypted: " << s << endl; // выводим шифрованный текст
  25. }
  26.  
  27. void DecryptCaiser()
  28. {
  29. string s; // строка
  30. int key; // ключ шифра Цезаря
  31.  
  32. cout << "Enter a string > ";
  33. cin >> s; // вводим строку
  34.  
  35. cout << "\nEnter the key > ";
  36. cin >> key; // заправшиваем ключ
  37.  
  38. for (int i = 0; i < s.length(); i++)
  39. {
  40. s[i] -= key; // расшифровываем
  41. }
  42.  
  43. cout << "Your string = " << s; // выводим строку
  44. }
  45.  
  46. void cryptXor()
  47. {
  48. string s; // строка
  49. int key; // ключ
  50.  
  51. cout << "Enter a string > ";
  52. cin >> s; // вводим строку
  53.  
  54. cout << "Enter a key > ";
  55. cin >> key; // вводим ключ
  56.  
  57. for (int i = 0; i < s.length(); i++)
  58. {
  59. s[i] = s[i] ^ key; // шифруем! применяем операцию XOR
  60. }
  61.  
  62. cout << "\nEncrypted: " << endl; // выводим шифрованный текст
  63.  
  64. for (int i = 0; i < s.length(); i++)
  65. {
  66. if ((unsigned char)s[i] < 64)
  67. {
  68. cout << ' '; // если системный символ, то выводим пробел
  69. }
  70. else
  71. {
  72. cout << s[i];
  73. }
  74. }
  75. cout << endl;
  76. }
  77.  
  78. void decryptXor()
  79. {
  80. string s; // строка
  81. int key; // ключ
  82.  
  83. cout << "Enter a string > ";
  84. cin >> s; // вводим строку
  85.  
  86. cout << "Enter a key > ";
  87. cin >> key; // вводим ключ
  88.  
  89. for (int i = 0; i < s.length(); i++)
  90. {
  91. s[i] = s[i] ^ key; // расшифровываем аналогично шифрованию
  92. }
  93.  
  94. cout << "Your string = " << s; // выводим строку}
  95. }
  96.  
  97. int main()
  98. {
  99. int var;
  100. while (true)
  101. {
  102. cout << "\nGet Var(1-2)> ";
  103. cin >> var;
  104. switch (var)
  105. {
  106. case 1:
  107. caiser();
  108. DecryptCaiser();
  109. break;
  110. case 2:
  111. cryptXor();
  112. decryptXor();
  113. break;
  114. default:
  115. break;
  116. }
  117. }
  118. }
RAW Paste Data