📄 7.cpp
字号:
#include<stdio.h>
#include<iostream.h>
void Encry(char l[], char m[], int length1, int length2){
//加密函数
//数组l存明文,m存密钥;length1为明文长度,length2为密钥长度
FILE* fp2;//用来放加密后的密文
if((fp2=fopen("c.txt","r+"))==NULL)
{
cout<<"c.txt open error!";
return;
}
int j=0;
char n[50];
for(int i=0; i<length1; i++){
if(l[i]==' ')//读到明文中的空格时
cout<<l[i];
else{//读到明文中除空格外的其他字符
if(l[i]>=97&&l[i]<=122)//如果读到的字符是小写字母时
l[i]=l[i]-32;//将小写字母转换成大写字母
n[j]=l[i]-65+(m[j%length2]);//数组n存加密后的密文
if(n[j]>'Z')//当算出的结果字符的ASCII码大于Z时
n[j]=n[j]-26;
cout<<n[j];
fputc(n[j],fp2);//将加密后的字符逐个输出到c.txt中
j++;
}
}
cout<<endl;
}
void Decry(char p[], char q[], int length1, int length2){
//解密函数
//数组p存密钥,q存密文;length1为明文长度,length2为密钥长度
FILE* fp2;//用来放解密后的明文
if((fp2=fopen("c.txt","r+"))==NULL)
{
cout<<"c.txt open error!";
return;
}
int j=0;
char o[50];
for(int i=0; i<length1; i++){
if(q[i]==' ')//读到密文中的空格时
cout<<q[i];
else{//读到密文中除空格外的其他字符
if(q[i]>=97&&q[i]<=122)
q[i]=q[i]-32;
o[j]=q[i]+65-(p[j%length2]);//数组o存解密后的明文
if(o[j]<'A')
o[j]=o[j]+26;
cout<<o[j];
fputc(o[j],fp2);
j++;
}
}
cout<<endl;
}
void main(){
char b[50];
char mingwen[50];
char miyao[50];
int x;//x用来判断是进行解密还是加密
FILE* fp1;
FILE* fp2;
if((fp1=fopen("m.txt","r+"))==NULL)//读入明文或密文文件
{
cout<<"m.txt open error!";
return;
}
else cout<<"Open successly!"<<endl;
int i=0;
while((mingwen[i++]=fgetc(fp1))!=EOF);//用i来记录明文或密文个数
for(int j=0;j<i-1;j++){
cout<<mingwen[j];
}
cout<<endl;
if((fp2=fopen("k.txt","r+"))==NULL)//读入密钥文件
{
cout<<"k.txt open error!\n";
return;
}
else cout<<"Open successly!"<<endl;
int p=0;
while((miyao[p++]=fgetc(fp2))!=EOF);//用p来记录密钥个数
for(int q=0;q<p-1;q++){//输出密钥
cout<<miyao[q];
}
cout<<"Please inout a number(1 to Encry,2 to Decry):";
cin>>x;
if(x==1){
Encry(mingwen,miyao,i-1,p-1);//调用加密函数
}
else if(x==2){
Decry(miyao,mingwen,i-1,p-1);//调用解密函数
}
else
cout<<"Error Input!Please input again:";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -