Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1.  
  2. #include "lab_7_Header.h"
  3.  
  4. int main()
  5. {
  6. system("chcp 1251 > nul");
  7. unsigned char line1;
  8. unsigned char l;
  9. int sum = 0;
  10. int i = 0;
  11. int A[256][256];
  12. for (int i = 0; i < 256; i++)
  13. {
  14. for (int j = 0; j < 256; j++)
  15. {
  16. A[i][j] = 0;
  17. }
  18. }
  19. // ( чтение )
  20. ifstream fin("c:\\Users\\Admin\\source\\repos\\text\\key1.txt", ios::in | ios::binary);
  21. if (!fin) // cotrol
  22. {
  23. cout << "Error of file opening." << endl;
  24. return 1;
  25. }
  26.  
  27. bool fl = true;
  28. int kol = 0; // длина массива ключей
  29. while (!fin.eof()) /// кол-во слов
  30. {
  31. line1 = fin.get();
  32. if ((line1 == ' ') || (line1 == '\n'))
  33. {
  34. fl = true;
  35. }
  36. else
  37. {
  38. if (fl)
  39. {
  40. kol++;
  41. }
  42. fl = false;
  43. }
  44. }
  45. fl = false;
  46. int* key = new int[kol];
  47. //fin.seekg(1, ios_base::beg);
  48. fin.clear();
  49. fin.seekg(0);
  50. int t;
  51. while (!fin.eof()) /// массив ключей
  52. {
  53. line1 = fin.get();
  54. if ((line1 == ' ') || (line1 == '\n'))
  55. {
  56. fl = true;
  57. }
  58. else
  59. {
  60. if (fl)
  61. { t = sum % 256;
  62. key[i] = t;
  63. //cout << key[i] << endl;
  64. sum = 0;
  65. i++;
  66. }
  67. sum = sum + line1;
  68. fl = false;
  69. }
  70. }
  71. sum = sum - line1;
  72. //key = new int;
  73. key[i] = sum % 256;
  74. //cout << key[i] << endl;
  75. // массив заполнен юху-у-у-у!
  76.  
  77. // выведим массив, чтобы убедиться, что все верно
  78. /*for (int i = 0; i < kol; i++)
  79. {
  80. cout << key[i] << ' ';
  81. }*/
  82. fin.close();
  83.  
  84. ifstream text("c:\\Users\\Admin\\source\\repos\\text\\text.txt", ios::in | std::ios::binary);
  85. if (!text.is_open()) // cotrol
  86. {
  87. cout << "Error of file opening." << endl;
  88. return 1;
  89. }
  90. ofstream crypt("c:\\Users\\Admin\\source\\repos\\text\\crypt.txt", ios::out | std:: ios::binary);
  91. if (!crypt.is_open()) // cotrol
  92. {
  93. cout << "Error of file opening." << endl;
  94. return 1;
  95. }
  96. i = 0; // запись кодирование
  97. unsigned char cEOF = (unsigned char)(EOF);
  98. while (!text.eof())
  99. {
  100. line1 = text.get();
  101. if (line1 == cEOF)
  102. {
  103. break;
  104. }
  105. l = (unsigned char)((int)(line1) ^ key[i]);
  106. A[(int)(line1)][(int)(line1) ^ key[i]]++;
  107. //cout << l << endl;
  108. crypt << l;
  109. i++;
  110. if (i == kol) { i = 0; }
  111. }
  112.  
  113.  
  114. crypt.close();
  115. text.close();
  116. ////// декодирование
  117. ifstream code("c:\\Users\\Admin\\source\\repos\\text\\crypt.txt", ios::in | std::ios::binary);
  118. if (!code.is_open()) // cotrol
  119. {
  120. cout << "Error of file opening code." << endl;
  121. return 1;
  122. }
  123. ofstream decode("c:\\Users\\Admin\\source\\repos\\text\\decode.txt", ios::out | std::ios::binary);
  124. if (!decode.is_open()) // cotrol
  125. {
  126. cout << "Error of file opening decode." << endl;
  127. return 1;
  128. }
  129. i = 0; // запись декодирование
  130. while (!code.eof())
  131. {
  132. line1 = code.get();
  133. if ( line1 == cEOF)
  134. {
  135. break;
  136. }
  137. l = (unsigned char)((int)(line1) ^ key[i]);
  138. cout << l;
  139. decode << l;
  140. i++;
  141. if (i == kol) { i = 0; }
  142. }
  143. cout<<endl;
  144. //cout << (char)(EOF);
  145. decode.close();
  146. code.close();
  147.  
  148. // statistic
  149. st(A);
  150. return 0;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement