📄 sceret.cpp
字号:
#include<iostream>
using namespace std;
#include<time.h>
#define name_long 10
#define num 12
int A[num]={1,3,5,7,9,11,15,17,19,21,23,25};
int B[num]={1,9,21,15,3,19,7,23,11,5,17,25};
int all=0;
int Arandom();
int Brandom();
int fre_m[26];
int fre_c[26];
double long out[26];
void cry();
void dec();
void main()
{
double long total_fre=0;
for(int m=0;m<26;m++)
fre_m[m]=fre_c[m]=0;
int ch;
cout<<""<<endl;
if(ch=1)
cry();
for(int i=0;i<26;i++)
{
out[i]=((double long)fre_m[i]/(double long)all);
cout<<"字母"<<(char)(i+97)<<"出现的概率是"<<out[i]<<endl;
total_fre=total_fre+out[i]*out[i];
}
cout<<"重合指数为"<<total_fre<<endl;
for(i=0;i<26;i++)
out[i]=0;
total_fre=0;
for( i=0;i<26;i++)
{
out[i]=((double long)fre_c[i]/(double long)all);
cout<<"字母"<<(char)(i+97)<<"出现的概率是"<<out[i]<<endl;
total_fre=total_fre+out[i]*out[i];
}
cout<<"重合指数为"<<total_fre<<endl;
dec();
}
void cry()
{
FILE *fp1,*fp2,*key;
char file_name_1[name_long];
char file_name_2[name_long];
char ch;
char cher;
int f;
cout<<"请输入你要加密的文件:"<<endl;
cin>>file_name_1;
cout<<"请输入你要写入的文件:"<<endl;
cin>>file_name_2;
fp1=fopen(file_name_1,"r");
fp2=fopen(file_name_2,"w");
key=fopen("key.txt","w");
int a=Arandom() ,b=Brandom();
if(fp2==NULL)
cout<<"对不起,要写的文件不能打开"<<endl;
if(fp1==NULL)
cout<<"对不起,要读的文件不能打开"<<endl;
else
while((ch=fgetc(fp1))!=EOF)
{
if(ch>='a'&&ch<='z')
{
all++;
f=(int)(ch-97);
fre_m[f]++;
cher=(A[a]*(ch-97)+b)%26+97;
// cout<<cher;
f=(int)(cher-97);
fre_c[f]++;
fputc(cher,fp2);
}
else
{
// cout<<ch;
fputc(ch,fp2);
}
}
fputc(a,key);
fputc(b,key);
fclose(fp1);
fclose(fp2);
fclose(key);
}
int Arandom()
{
int i = 0;
srand(time(NULL));
i = rand()%12;
return i ;
}
int Brandom()
{
int j = 0;
srand(time(NULL));
j = rand()%26;
return j;
}
void dec()
{
FILE *fp1,*fp2,*key;
char file_name_1[name_long];
char file_name_2[name_long];
char ch;
char cher;
int a, b,x;
cout<<"请输入你要解密的文件:"<<endl;
cin>>file_name_1;
cout<<"请输入你要写入的文件:"<<endl;
cin>>file_name_2;
fp1=fopen(file_name_1,"r");
fp2=fopen(file_name_2,"w");
key=fopen("key.txt","r");
if(fp2==NULL)
cout<<"对不起,要写的文件不能打开"<<endl;
if(fp1==NULL)
cout<<"对不起,要解密文件不能打开"<<endl;
if(key==NULL)
{
cout<<"对不起,密钥文件不能打开"<<endl;
}
else
{
(int)a=fgetc(key);
(int)b=fgetc(key);
while((ch=fgetc(fp1))!=EOF)
{
if(ch>='a'&&ch<='z')
{
x=B[a]*((ch-97)-b);
while(x<0)
x=x+26;
int c=(int)ch-97;
fre_c[c]++;
cher=(x)%26+97;
// cout<<cher;
fputc(cher,fp2);
}
else
{
// cout<<ch;
fputc(ch,fp2);
}
}
fclose(fp1);
fclose(fp2);
fclose(key);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -