Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. #include <fstream>
  4. #include <Windows.h>
  5. using namespace std;
  6.  
  7. int main()
  8.  
  9. {
  10.  
  11. SetConsoleCP(1251);
  12. SetConsoleOutputCP(1251);
  13. ifstream key; // входной файловый поток
  14. key.open("key.txt");
  15. if (!key) {
  16. cout << "Error of file opening." << endl;
  17. return 1;
  18. }
  19. key.clear();
  20. key.seekg(NULL);
  21.  
  22. int arrk[256]; // массив ключей (ключ - сумма кодов элементов в 1 слове)
  23. int sum = 0; // сумма кодов
  24. int n = 0; // количество слов
  25. char el; //
  26.  
  27. while (key.get(el))
  28. {
  29. if (el != ' ') {
  30. sum += (unsigned int(el)) % 256;
  31. }
  32. else
  33. {
  34. arrk[n] = sum;
  35. n++;
  36. sum = 0;
  37. }
  38. }
  39. arrk[n] = sum;
  40.  
  41.  
  42.  
  43. /*for (int i = 0; i <= n; i++)
  44. {
  45. cout << arrk[i] << " ";
  46.  
  47. }*/
  48.  
  49. key.close();
  50.  
  51. ifstream orig;
  52. orig.open("исходный.txt", ios::binary | ios::in);
  53. if (!orig) {
  54. cout << "Error of file opening." << endl;
  55. return 1;
  56. }
  57.  
  58. char el1; // элементы исходного текста
  59. int i = 0;
  60. int stat[256][256];
  61.  
  62. for (int i = 0; i < 256; i++)
  63. {
  64. for (int j = 0; j < 256; j++)
  65. {
  66. stat[i][j] = 0;
  67.  
  68. }
  69. }
  70. fstream shifr;
  71. shifr.open("зашифрованный.txt", ios::binary | ios::out);
  72. while (orig.get(el1))
  73. {
  74. stat[(unsigned char(el1)) % 256][((unsigned char(el1) % 256) + arrk[i % n]) % 256]++;
  75. shifr << char(((unsigned int(el1) % 256) + arrk[i % n]) % 256);
  76. i++;
  77. }
  78. shifr.close();
  79. /*shifr.clear();
  80. shifr.seekg(NULL);*/
  81. shifr.open("зашифрованный.txt", ios::binary | ios::in);
  82. ofstream deshifr;
  83. deshifr.open("расшифрованный.txt", ios::binary | ios::out);
  84. i = 0;
  85. char el2;
  86. while (shifr.get(el))
  87. {
  88. el2 = char(((unsigned int(el) % 256) - arrk[i % n]));
  89. i++;
  90. deshifr << el2;
  91. }
  92. shifr.close();
  93. deshifr.close();
  94. orig.close();
  95.  
  96. char el3;
  97. cin.get(el3);
  98. for (int i = 0; i < 256; i++)
  99. {
  100. if (stat[unsigned char(el3)][i] != 0)
  101. {
  102. cout << unsigned char(i) << ' ' << stat[unsigned char(el3)][i];
  103. cout << endl;
  104. }
  105.  
  106. }
  107.  
  108. system("pause");
  109.  
  110. return 0;
  111.  
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement