⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hill.cpp

📁 HILL密码加解密的C++实现
💻 CPP
字号:
#include<iostream>
#include<math.h>
using namespace std;
int rownum,**Matrix_K,**Matrix_P,*result;

void multiply(){   
	 for (int i=0;i<rownum;i++)
	 {
		 result[i]=0;
		 for (int j=0;j<rownum;j++)
		 {
			 result[i]+=Matrix_K[i][j]*Matrix_P[j][0];
			 result[i]%=26;
		 }
		 cout<<char(result[i]+96)<<" ";
	 }
}

void main(){
	cout<<"请输入矩阵的大小!"<<endl;
	cin>>rownum;
	result=new int[rownum];
	Matrix_K=new int*[rownum];
	for(int i=0;i<rownum;i++) 
		Matrix_K[i]=new int[rownum]; 

	Matrix_P=new int*[rownum];
	for(int i=0;i<rownum;i++) 
		Matrix_P[i]=new int[1]; 

	cout<<"\n***加密***\n"<<endl;
	cout<<"请按行输入密钥K!"<<endl;
	for(int i=0;i<rownum;i++){
		for(int j=0;j<rownum;j++)
			cin>>Matrix_K[i][j];
	}

	cout<<"请输入明文!"<<endl;
	char s[64];
	cin>>s;

	for(int i=0;i<strlen(s);i++){
		Matrix_P[i%rownum][0]=s[i]-'a'+1;
		if (i%rownum==rownum-1)
		{
			multiply();
		}
	}
    cout<<endl;
	cout<<"\n***解密***\n"<<endl;
	cout<<"请按行输入逆密钥K!"<<endl;
	for(int i=0;i<rownum;i++){
		for(int j=0;j<rownum;j++)
			cin>>Matrix_K[i][j];
	}

	cout<<"请输入密文!"<<endl;

	char q[64];
	cin>>q;

	for(int i=0;i<strlen(q);i++){
		Matrix_P[i%rownum][0]=q[i]-'a'+1;
		if (i%rownum==rownum-1)
		{
			multiply();
		}
	}
	for(int i=0;i<rownum;i++) {
		delete []Matrix_K[i];
		delete []Matrix_P[i];
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -