C语言设计一个简单的加密解密程序

收集20篇左右的某种英文文献资料(每篇字符数量>1万字符),将其编辑成一个超过20万字符的文件,统计每个英文字母的使用频率,对期中的一篇进行加密,然后运用统计方法进行解密,人工比较解密结果与明文的差距。要求: 1. 加密使用简单替换的方法进行,并且只对英文字母进行加密,其他字符不替换,字母替换不区分大小写并按如下方式进行: a b c d e f g h i j k l m n o p q r s t u v w x y z g d y e f q r x k a p t u i n o v b j w c s h z l m 即加密时字母a用字母g替换、字母b用字母d替换、字母c用字母y替换、。。。。。。字母z用字母m替换。 2. 设计一个统计字母出现频率的函数void arate(char filename[50],float fr[26]),函数的功能是统计filename文件中每一英文字母出现的频率,统计结果存放在数组fr[26]中,期中a[0]~a[25]分别表示字母a~z(大小写不分)出现的频率。 3. 设计一个加密函数void enp(char infile[50],char outfile[50],char key[26]),函数的功能是将文件infile中的所有字母根据字母表key[26]进行加密,加密结果输出到文件outfile中。 4. 设计一个函数void dep(char infile[50],char outfile[50],float fr[26]),函数的功能是根据字母频率表对文件(密文)中的每一字母进行解密,解密的结果存放到文件outfile中,方法是统计infile文件中每一字母出现的频率,根据频率表推断每一字母(密文)对应的字母(明文)。

C语言设计一个简单的加密解密程序如下:
加密程序代码:
#include<stdio.h>
main()
{
char
c,filename[20];
FILE
*fp1,*fp2;
printf("请输入待加密的文件名:\n");
scanf("%s",filename);
fp1=fopen(filename,"r");
fp2=fopen("miwen.txt","w");
do
{
c=fgetc(fp1);
if(c>=32&&c<=126)
{
c=c-32;
c=126-c;
}
if(c!=-1)
fprintf(fp2,"%c",c);
}
while(c!=-1);
}
解密程序代码:
#include<stdio.h>
#include<string.h>
main()
{
char
c,filename[20];
char
yanzhengma[20];
FILE
*fp1,*fp2;
printf("请输入待解密文件名:\n");
scanf("%s",filename);
printf("请输入验证码:\n");
scanf("%s",yanzhengma);
if(strcmp(yanzhengma,"shan")==0)
{
fp1=fopen(filename,"r");
fp2=fopen("yuanwen.txt","w");
do
{
c=fgetc(fp1);
if(c>=32&&c<=126)
{
c=126-c;
c=32+c;
}
if(c!=-1)
fprintf(fp2,"%c",c);
}
while(c!=-1);
}
else
{
printf("验证码错误!请重新输入:\n");
scanf("%s",filename);
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜