求助:怎样用C语言实现对文本文件的加密,解密啊?

到百度贴吧首页
新闻   网页   贴吧   知道   MP3   图片   视频   百科
    吧内搜索 | 帮助

求助:怎样用C语言实现对文本文件的加密,解密啊?

1楼

我是个新手,请大家多多关照

2楼

踏踏实实慢慢学
221.10.85.*

3楼

我也想知道啊,那位高手指点一下嘛
221.10.168.*

5楼

我靠,这么简单问我啊,你留个邮箱,我给你传过来
居然没人会做,这吧的水平,唉....我是第一次来这里

6楼

楼上的朋友怎么第一次来就出言不逊,这里的人都不爱帮懒人做功课,和水平无关。
218.64.57.*

7楼

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

void dofile(char *in_fname,char *pwd,char *out_fname);/*对文件进行加密的具体函数*/

void main(int argc,char *argv[])/*定义main()函数的命令行参数*/
{
char in_fname[30];/*用户输入的要加密的文件名*/
char out_fname[30];
char pwd[8];/*用来保存密码*/

if(argc!=4){/*容错处理*/
printf("\nIn-fname:\n");
gets(in_fname);/*得到要加密的文件名*/

printf("Password:\n");
gets(pwd);/*得到密码*/

printf("Out-file:\n");
gets(out_fname);/*得到加密后你要的文件名*/


dofile(in_fname,pwd,out_fname);
}
else{/*如果命令行参数正确,便直接运行程序*/
strcpy(in_fname,argv[1]);
strcpy(pwd,argv[2]);
strcpy(out_fname,argv[3]);
dofile(in_fname,pwd,out_fname);
}

}


/*加密子函数开始*/
void dofile(char *in_fname,char *pwd,char *out_file)
{
FILE *fp1,*fp2;
register char ch;
int j=0;
int j0=0;

fp1=fopen(in_fname,"rb");
if(fp1==NULL){
printf("cannot open in-file.\n");
exit(1);/*如果不能打开要加密的文件,便退出程序*/
}
fp2=fopen(out_file,"wb");
if(fp2==NULL){
printf("cannot open or create out-file.\n");
exit(1);/*如果不能建立加密后的文件,便退出*/
}
while(pwd[++j0]);
ch=fgetc(fp1);

/*加密算法开始*/
while(!feof(fp1)){
fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*异或后写入fp2文件*/
ch=fgetc(fp1);
}
fclose(fp1);/*关闭源文件*/
fclose(fp2);/*关闭目标文件*/
}

/*程序结束*/

 发布人:刘丹

8楼

楼上的,我对你景仰之心,犹如滔滔黄河,一发而不可收拾,交个朋友!

9楼

7 楼的并非原创,原出处:

http://tech.163.com/04/1211/19/17BJUC1J0009rt.html

10楼

原来楼上的兄台,如此有见识,佩服!~~
218.199.136.*

11楼

bhtbht123@sina.com 谢谢帮忙把答案传过来呀。谢

12楼

7楼的这可是不行的
60.180.35.*

13楼

转的乱七八遭的!!
218.61.14.*

14楼

kao 垃圾 文件
219.140.173.*

15楼

谢谢
221.0.180.*

16楼

程序是没问题,但是不能用呀,设不上密码.是不是我错了.求教;;;;;;;;;;;;;;;;;;;;;;;;;;

17楼

在linux 下不是这样编的。。。
222.171.18.*

19楼

懒人需要大家帮助了,。。。。帮帮偶吧,作业啊,期末的,哪位高手做个吧。。。。。

20楼

怎样编写屏保,也就是 设计一个图还 要设计密码?天呢我 都还才开学怎么会搞哦?请各位高手帮帮忙罗。还要记期末成绩 呢?我的头都大了哎。。。。
219.135.181.*

21楼

那解密呢???
59.42.133.*

22楼

原来这里可以帮大家做作业的啊 呵呵!!!! 下次我们老师给我们的任务我一定不会忘记大家的拉

24楼

解密呢
125.91.117.*

26楼

长见识
222.178.216.*

27楼

while(pwd[++j0]); 这句是不是有问题啊
58.82.176.*

28楼

解密用同一个文件,用异或加密的文件与原来的密码再异或一次就可以变成原文件了……
不知道他的程序是否正确,不过我的不一样
main(){
 FILE *in,*out;
 char inputfile[20],outputfile[20],key[20];
 printf("input file name:\n");
 scanf("%s",inputfile);
 printf("output file name:\n");
 scanf("%s",outputfile);
 printf("input Key:\n");
 scanf("%s",key);
 in=fopen(inputfile,"r"); 
 out=fopen(outputfile,"w");
 int keycount=0;
 int i=0;
 while(key[i]!='\0'){
 i++;
 keycount++;
 }
 i=0;
 char ch=fgetc(in);
 while(!feof(in)){
 if(i>keycount)
 i=0;
 fputc((ch^key[i++]),out);
 ch=fgetc(in);
 }
 fclose(in);
 fclose(out);
}
原文件名目标文件名密码均在20位以内,没写判度意外情况的语句,需要者自加
不足处,输入密码时是明文显示的
还有,楼上的while(pwd[++j0]);没问题,是用来判断密码长度的,因为密码未必一定
等于8位!
其实上面的程序,写的真的不错……

29楼

有点看不懂啊

30楼

我两个礼拜前刚学C语言!!请大哥哥们多多指教!!我刚过16!!觉得C语言真难啊!!!
222.75.165.*

31楼

大哥 厉害呀告诉我怎么才能和你门一样
我也是一个新手  拜托了 大哥

32楼

我以前好像发过一次密代码的......................
221.6.151.*

33楼

不会啊,写的具体一点啊,

34楼

我安装了 CC++程序设计学习与实验系统2008 怎么不能用啊?

发表回复

内 容:
用户名:
  
©2010 Baidu 贴吧协议  意见反馈