300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 跪求c语言编程问题文件移位加密与解密急 – java – 前端

跪求c语言编程问题文件移位加密与解密急 – java – 前端

时间:2024-05-28 22:35:18

相关推荐

跪求c语言编程问题文件移位加密与解密急 – java – 前端

c语言文件加密和解密方法如下:

1、首先打开VC++6.0;

2、选择文件,新建;

3、选择C++sourceFILE新建一个空白文档;

4、声明头文件

#include

#include

#include

首先写个加密函数,算法就是简介里说的;

void?EncryptFile(file?*sfp,FILE?*dfp,char?pwd)

{

char?ch;

if(sfp==0||dfp==0)

{

printf(“ERROR!\n”);

return;

}

while((ch=fgetc(sfp))!=EOF)

{

if((ch>=’a’)&&(ch

{

ch=(ch-‘a’+1)%26+’a’;

ch=ch^pwd;

}

if((ch>=’A’)&&(ch

{

ch=(ch-‘A’+1)%26+’A’;

ch=ch^pwd;

}

fputc(ch,dfp);

}

}

写解密子函数:与加密的过程相反;

void?DecryptFile(FILE?*sfp,FILE?*dfp,char?pwd)

{

char?ch;

while((ch=fgetc(sfp))!=EOF)

{

if((ch>=’a’)&&(ch

{

ch=ch^pwd;

ch=(ch-‘a’+25)%26+’a’;

}

if((ch>=’A’)&&(ch

{

ch=ch^pwd;

ch=(ch-‘A’+25)%26+’A’;

}

fputc(ch,dfp);

}

}

输出函数,输出文件内容

void?OutputFile(FILE?*fp)

{

char?ch;

while((ch=fgetc(fp))!=EOF)

putchar(ch);

}

主函数,主要调用这几个函数

int?main()

{

/*用户输入的要加密的文件名*/

char?sfilename[20];

/*用户输入加密后保存的文件名*/

char?dfilename[20];

/*用来保存密码字符*/

char?pwd;

FILE?*sfp,*dfp;

printf(“\nPlease?input?filename?to?be?encrypted:\n”);

/*得到要加密的文件名*/

gets(sfilename);

/*得到加密后你要的文件名*/

printf(“input?filename?to?save?the?encrypted?file:\n”);

gets(dfilename);

/*得到加密字符*/

printf(“Please?input?your?Password:\n”);

//scanf(“%c”,&pwd);

pwd=getch();

/*屏幕以*来表示输入的加密字符*/

printf(“*\n”);

/*以只读方式打开要加密的文件*/

if((sfp=fopen(sfilename,”r”))==0)

{

printf(“Can’t?open?the?file?:%s\n”,sfilename);

exit(0);

}

/*输出要加密的文件*/

printf(“\nThe?the?text?of?file?to?be?encrypted?is:\n”);

OutputFile(sfp);

/*建立加密后的文件*/

if((dfp=fopen(dfilename,”w+”))==0)

{

printf(“Can’t?open?or?create?the?file?:%s\n”,dfilename);

//exit(0);

}

/*文件加密*/

fseek(sfp,0L,SEEK_SET);

EncryptFile(sfp,dfp,pwd);

printf(“\n\nEncrypted?the?file?successfully!\n”);

/*输出加密后的文件*/

printf(“\nAfter?encrypting?the?text?of?file?is:\n”);

fseek(dfp,0L,SEEK_SET);

OutputFile(dfp);

fclose(sfp);

fclose(dfp);

getch();

return?0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。