Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int* double_h(int**h) //удваиваем хеш значение, чтобы использовать как ключ
- {
- int * k = new int[32];
- for (int i = 0; i < N; i++)
- for (int j = 0; j < N; j++)
- k[i*N + j] = h[i][j];
- for (int i = 0; i < N; i++)
- for (int j = 0; j < N; j++)
- k[i*N + j+16] = h[i][j];
- return k;
- }
- int** Hash(ifstream &f, ofstream&of)
- {
- int** M = new int*[N];
- for (int i = 0; i < N; i++)
- M[i] = new int[N];
- for (int i = 0; i < N; i++)
- for (int j = 0; j < N; j++)
- M[i][j] = 0;
- int** h = new int*[N];
- for (int i = 0; i < N; i++)
- h[i] = new int[N];
- for (int i = 0; i < N; i++)
- for (int j = 0; j < N; j++)
- h[i][j] = 0;
- int x = 0, k = 0, I = 0, J = 0;
- while (f>> x)//читаем файл
- {
- if ((k % 16 == 0) && (k != 0))
- {
- for (int i = 0; i < N; i++)
- for (int j = 0; j < N; j++)
- h[i][j] = M[i][j];
- M = encryption(M, key(double_h(h)));
- for (int i = 0; i < N; i++)
- for (int j = 0; j < N; j++)
- h[i][j] ^= M[i][j];
- }
- k++; I++; J++;
- if (I % 4 == 0) I = 0;
- if (J % 4 == 0) J = 0;
- M[I][J] ^= x;
- }
- for (int l = I; l < N; l++)
- for (int m = J; m < N; m++)
- h[l][m] ^= (l + m) % 10;
- for (int i = 0; i < N; i++)
- for (int j = 0; j < N; j++)
- h[i][j] = M[i][j];
- M = encryption(M, key(double_h(h)));
- for (int i = 0; i < N; i++)
- for (int j = 0; j < N; j++)
- h[i][j] ^= M[i][j];
- for (int l = 0; l < N; l++)//вывод в файл
- {
- for (int m = 0; m < N; m++)
- of << h[l][m];
- }
- return h;
- }
Advertisement
Add Comment
Please, Sign In to add comment