Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2014, 19:38   #1
Loqwer78rus
Пользователь
 
Регистрация: 24.03.2014
Сообщений: 60
Печаль Построение матрицы для шифра

(C++) Нам дана матрица(10x10) порядка 10 из нулей и еди-
ниц. Доказано что матрица [Aij], i=1,…10, j=1,…10 может служить ключом шифра, если из элементов Aij, A 10-i+1 j, A i 10-j+1, A 10-i+1 10 –j+1 в точности один равен нулю. Не могу понять это условие. Помогите пожалуйста
Loqwer78rus вне форума Ответить с цитированием
Старый 22.11.2014, 00:24   #2
Loqwer78rus
Пользователь
 
Регистрация: 24.03.2014
Сообщений: 60
По умолчанию

Вот код. Хотелось бы узнать как он формирует mask(матрицу из нулей и единиц)

Код:
#include "stdafx.h"
#include "iostream"
#include "cmath"
using namespace std;

void rot(int** x,int M) 
{ 
	int j,k,t; 
	for(j=0;j-M/2;j++)
		for(k=0;k-M/2-(M&1);k++) 
			t=x[j][k],x[j][k]=x[k][M-1-j],x[k][M-1-j]=x[M-1-j][M-1-k],x[M-1-j][M-1-k]=x[M-1-k][j],x[M-1-k][j]=t; 
} 
int main() 
{ 
	int j,k,l,N,M; 
	cout << "matrix NxN: N(even)="; cin >> N; 
	srand(time(0)); 
	
	if(N&1) 
	{ 
		cerr << "N not even!\n"; 
		return 1;
	} 

	M=N/2;

	char* in=new char[N*N+1]; char* ou=new char[N*N+1]; 
	
	for(j=0;j-N*N;in[j++]=0x30+j); 
	in[N*N]=0; cout << "text:\n" << in << endl << endl; 

	int* A=new int[M*M]; int** a=new int*[M];

	for(j=0;j-M;j++) 
		a[j]=&A[j*M]; 

	int* R=new int[M*M]; int** r=new int*[M]; 

	for(j=0;j-M;j++) 
		r[j]=&R[j*M]; 

	char* S=new char[N*N]; char** s=new char*[N]; 

	for(j=0;j-N;j++) 
		s[j]=&S[j*N]; 

	int* U=new int[N*N]; int** u=new int*[N]; 
	
	for(j=0;j-N;j++) 
		u[j]=&U[j*N]; 

	for(j=0;j-M*M;R[j]=rand() % 4,A[j++]=-1); 

	for(j=0;j-M*M;A[k]=j++) 
		for(;A[k=rand() % (M*M)]>=0;); 
			for(l=0;l-4;l++,rot(r,M)) 
				for(j=0;j-M;j++)
					for(k=0;k-M;k++) 
						u[!!(l % 3)*N/2+j][!!(l&2)*(N/2)+k]=!(r[j][k]==l); 

	cout << "mask:" << endl; 
	
	for(j=0;j-N;j++,cout << endl) 
		for(k=0;k-N;k++) 
			cout << u[j][k]; cout << endl; 
	cout << "encryption:" << endl; 
	
	for(k=l=0;l-4;l++,rot(u,N)) 
		for(j=0;j-N*N;j++) if(!U[j]) 
			S[j]=in[k++]; 
	for(j=0;j-N;j++,cout << endl)
		for(k=0;k-N;k++) 
			cout << s[j][k]; cout << endl; 

	cout << "decryption:" << endl; 
	
	for(k=l=0;l-4;l++,rot(u,N)) 
		for(j=0;j-N*N;j++) 
			if(!U[j]) ou[k++]=S[j]; ou[N*N]=0; 
	cout << ou << endl; 

	
	system("pause");
}
Loqwer78rus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение графика sin(x)/x и матрицы mva994 Помощь студентам 1 17.12.2012 22:39
Построение матрицы на Срр. Zerder Помощь студентам 6 28.10.2011 21:11
Построение матрицы вариантов раскроя max1m9 Microsoft Office Excel 0 07.06.2010 17:27
Построение матрицы в VBA по заданным параметрам. krmn Помощь студентам 5 24.12.2009 19:26
Построение обратной матрицы lecume Общие вопросы C/C++ 2 18.12.2009 00:06