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

📄 栏栅解密.cpp

📁 用C++实现的栏栅解密算法
💻 CPP
字号:
// 作业:栏栅解密算法
// 作者:02103409班 10号 郭卫军
// 日期:2005.3.26

//#include "stdafx.h"
#include<iostream.h>
#include<math.h>
void Input(char p[],int &n){  //输入密文
	char chdata;
	int i;
	i=0;
	cin>>chdata;
    while(chdata!='/'){      
		p[i]=chdata;
		i++;
		cin>>chdata;
		}
	n=i;  
}

void Public1(char A[],int I,int K)//当密文长度能被密钥整除时
{
	char P[20][20];
	int a;
	a=0;
	for(int k=0;k<K;k++)
		for(int i=0;i<I;i++){
			P[k][i]=A[a];
			a++;
		}
	for(int i=0;i<I;i++)
		for(int k=0;k<K;k++)
			cout<<P[k][i];
		cout<<endl;
}
void Public2(char A[],int I,int J,int K,int N)//当密文长度不能被密钥整除时
{
	char P[20][20];
	int a;
	a=0;
	for(int k=0;k<J;k++)
		for(int i=0;i<=I;i++){
			P[k][i]=A[a];
			a++;
		}
	for(int b=J;b<K;b++)
		for(int i=0;i<I;i++){
			P[b][i]=A[a];
		    a++;
		}
	for(int i=0;i<I;i++)
		for(int k=0;k<K;k++)
			cout<<P[k][i];
		for(int c=0;c<J;c++)
			cout<<P[c][i];
}
int main(int argc, char* argv[])
{
	char Secret[50];
	int n,m,div;
	int key;
    cout<<"*************************************************************"<<endl;
	cout<<"注意:输入密文时,输入斜杠'/'后,输入结束."<<endl;
	cout<<"*************************************************************"<<endl;
	cout<<"请输入密文字符:"<<endl;
	Input(Secret,n);
	cout<<"输入密钥:"<<endl;
	cin>>key;
	cout<<endl;
	div=n/key;
	m=n % key;
	cout<<"解密后明文是:";
	if(!m)
		Public1(Secret,div,key);
	else
		Public2(Secret,div,m,key,n);
	return 0;
}

⌨️ 快捷键说明

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