问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言程序设计之文件加密

发布网友 发布时间:2022-04-30 17:37

我来回答

1个回答

热心网友 时间:2022-06-28 13:19

我写的,纯粹为了好玩。
小程序,加密自然比较简单,程序在win-tc下通过。
/* 数据安全实用程序,加密解密简单程序 */
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int flag;

char encrypt(char ch,int key)/*加密函数,把字符循环移位*/
{
if(ch>='a' && ch<='z') /* 如果是小写字母 */
{
ch=(ch-'a'+key%26)%26+'a';
}
else if(ch>='A' && ch<='Z') /* 如果是大写字母 */
{
ch=(ch-'A'+key%26)%26+'A';
}
return ch;
}

char decrypt(char ch,int key)/*解密函数,把字符循环移位*/
{
if(ch>='a' && ch<='z') /* 如果是小写字母 */
{
ch=(ch-'a'+26-key%26)%26+'a';
}
else if(ch>='A' && ch<='Z') /* 如果是大写字母 */
{
ch=(ch-'A'+26-key%26)%26+'A';
}
return ch;
}

void menu()/*菜单,1.加密,2.解密,3.显示文本文件内容*/
{
clrscr();
printf("\n=======================================================");
printf("\n1.Encrypt the text file");
printf("\n2.Decrypt the text file");
printf("\n3.Display text file contents");
printf("\n4.Quit\n");
printf("=========================================================\n");
printf("Please select a item:");
}

void logo()/*显示程序信息*/
{
printf("\n welcome to encrypt program \n ");
return;
}

void encrypt_decrypt_File(char* infile,int key, char* outfile)
{
FILE *in,*out;
char ch;
clrscr();
if((in=fopen(infile,"r"))==NULL) /* 打开欲加密或解密的文件*/
{
printf("Can not open the infile!\n");
printf("Press any key to exit!\n");
getch();
exit(0);
}
if((out=fopen(outfile,"w"))==NULL) /* 打开文件保存加密或解密后的内容*/
{
printf("Can not open the outfile!\n");
printf("Press any key to exit!\n");
fclose(in);
getch();
exit(0);
}
ch=fgetc(in); /*从文本文件中读入字符*/
while(ch!=EOF)/*加密或解密*/
{
/*如果是英文字符,则进行加密或解密,否则,不进行加密或解密处理*/
if((ch>='a' && ch<='z' ) || (ch>='A' && ch<='Z'))
{ if(flag==1)
fputc(encrypt(ch,key),out);
if(flag==2)
fputc(decrypt(ch,key),out);
}
else
fputc(ch,out);
ch=fgetc(in);
}
/*关闭输入及输出文件*/
fclose(in);
fclose(out);

}

void displayFile(char *infile) /*将文本文件的内容显示在屏幕上*/
{
FILE *fp;
char string[81];
if((fp=fopen(infile,"r"))==NULL)
{
printf("cann't open file");exit(0);
}
while(fgets(string,81,fp)!=NULL)
fputs(string,stdout); /*把所取字符串送到屏幕显示*/
fclose(fp);
}

int main()
{
int i,n;
char ch0,ch1;
char infile[40],outfile[40];
textbackground(LIGHTGRAY); /*设置背景颜色*/
textcolor(BLACK); /*设置文字颜色*/
clrscr();/*清除屏幕显示*/
logo(); /*显示程序信息*/
sleep(2);
menu(); /*显示屏幕菜单*/
ch0=getche();/*等待用户从键盘输入*/
while(ch0!='4')
{
clrscr();
if(ch0=='1') /*选择加密功能*/
{
flag=1;
printf("\nPlease input the infile to be encrypted:");
scanf("%s",infile);
printf("Please input the encrypt key:");
scanf("%d",&n);/*输入加密密码*/
printf("Please input the outfile:");
scanf("%s",outfile);/*输入存放加密内容的文件名*/
encrypt_decrypt_File(infile,n,outfile);
printf("\nEncrypt is over!\n");
sleep(1);
}else if(ch0=='2') /*选择解密功能*/
{
flag=2;
printf("\nPlease input the infile to be decrypted:");
scanf("%s",infile);
printf("Please input the decrypt key:");
scanf("%d",&n);/*输入解密密码,加密和解密密码应相同*/
printf("Please input the outfile:");
scanf("%s",outfile);/*输入存放解密内容的文件名*/
encrypt_decrypt_File(infile,n,outfile);
printf("\nDecrypt is over!\n");
sleep(1);
}else if(ch0=='3') /*选择显示文本文件功能*/
{
printf("\nPlease input the infile to be displayed:");
scanf("%s",infile);
displayFile(infile);
getch();
}else{ /*不合法输入*/
printf("\nplease input a valid number(1-4)\n");
sleep(1);
}
menu();/*显示程序菜单*/
ch0=getche(); /*等待用户下一次的功能选择*/
}
system("cls");/*清除屏幕*/
logo(); /*显示程序信息*/
printf("\nGood Bye!\n");
sleep(2);

system("pause");
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求抛物线y×y-6x=0的焦点坐标和准线方程 6-6x=6的解是x=0 .( ) 判断题 财富 一个方程问题:6x=0有没有解 6x=0,x=( ) 下列算式是方程的是( )A.101-1=100B.8x-2C.6x=0D.x-17 6X=0,这个方程没有解 对吗? 6x=0不是方程.××.(判断对错) 6x=0是方程. __ (判断对错) 今晚地球停电一小时,做点什么好呢 月经第八天还有褐色分泌物预防什么病 就是word里面,下文的脚注和正文之间的距离为什么有的那么宽,有的看起来正合适,有没有什么办法让他们一样 请问如何让word中的脚注与正文对齐 word2016版本的脚注间隙太大,使用段落设置无法调整!行距什么的完全无效! word2010脚注与正文距离太大,而且每页都不一致,怎么能统一脚注与正文之间的距离呀?求大神指教 脚注线与正文之间的距离 每页不一样 word中正文1.5倍行距,如何固定脚注行距为1倍,而不是每次手动调整脚注行距 word里添加脚注,为什么跟正文之间空了这么多?我需要怎么调整? Microsoft Office Word 2003 中正文离脚注太远要怎么改? 脚注单倍行距怎么设置不了 如何在word2007里调整脚注和正文的间距? 拉杆箱的分类 期待相见的简短句子 期待见到一个人的句子怎么说? 形容离别后期待下一次相遇的诗句 期待下一次相聚的说说 期待下次再见短句有哪些? 物理题拉锯子怎么用力 家庭养花常用工具是什么? 锯削方法与技巧 加工工艺时,锯割和锉削顺序怎么分?钢丝锯和板锯、手锯的区别是什么? 用c语言设计一个文件加密的程序,并以此写一篇文件加密程序论文!急~~ C语言程序设计 文件加密 集体合同订立程序 金龙鱼吃了洗洁精怎么办 我想保护AI、PS和SolidWorks等设计制图文件,用什么加密软件合适? 集体合同订立的程序是怎样的 求设计行业最强的加密软件? 做图纸设计的部门都用的什么加密软件? 金龙鱼洗洁精主要材料 求真正的文件加密软件 集体合同订立有哪些程序? 我电脑里的设计文件用什么软件可以加密啊 火车可以带金龙鱼和洗洁精吗? 金龙鱼洁劲洗洁精沈阳地区去哪里批发? 用c++编写一个简单的文件加密程序 昨天看CCTV,说金龙鱼地沟油事件是被记者黑的,这到底是怎么回事啊? 签订集体合同的主要步骤一般包括什么 集体合同程序签订的步骤是怎样的 应该如何订立集体合同 食用油却变成胶状物了?