c文件如何解密|c语言文件加密和解密

① C语言(文件的移位与加密解密)

这道题,并不难,只是楼主,没有说清,是就字母移位吗?但是看你的例子,有不全是。 程序如下:#include <stdio.h>#include <stdlib.h>FILE *source;//源文件FILE *destination;//目标文件int key;//密钥char file[100];//文件名void encryption()//加密{ char ch; printf("请输入要加密的文件名\n"); scanf("%s",file); if((source=fopen(file,"r"))==NULL) { printf("无法打开文件!\n"); exit(0); } printf("请输入加密后的文件名\n"); scanf("%s",file); if((destination=fopen(file,"w"))==NULL) { printf("无法创建文件!\n"); exit(0); } printf("请输入密钥\n"); scanf("%d",&key); ch=fgetc(source); while(ch!=EOF) { if(ch=='\n') { fputc(ch,destination); ch=fgetc(source); continue; } ch+=key; fputc(ch,destination); ch=fgetc(source); } fclose(source); fclose(destination);}void decrypt()//解密{ char ch; printf("请输入要解密的文件名\n"); scanf("%s",file); if((source=fopen(file,"r"))==NULL) { printf("无法打开文件!\n"); exit(0); } printf("请输入加密后的文件名\n"); scanf("%s",file); if((destination=fopen(file,"w"))==NULL) { printf("无法创建文件!\n"); exit(0); } printf("请输入密钥\n"); scanf("%d",&key); ch=fgetc(source); while(ch!=EOF) { if(ch=='\n') { fputc(ch,destination); ch=fgetc(source); continue; } ch-=key; fputc(ch,destination); ch=fgetc(source); } fclose(source); fclose(destination);}int main()//主函数提供菜单{ int choice=0; printf("******************\n"); printf("1 文件加密\n"); printf("2 文件解密\n"); printf("3 退出\n"); printf("******************\n"); printf("请输入1 2 3选择操作\n"); scanf("%d",&choice); switch(choice) { case 1:encryption();break; case 2:decrypt();break; case 3:break; } return 0;}

② c语言加密解密算法

这里使用的是按位加密,按ASCII码进行加密的算法自己写个,很容易的。#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>voiddofile(char*in_fname,char*pwd,char*out_fname);/*对文件进行加密的具体函数*/voidusage(char*name);voidmain(intargc,char*argv[])/*定义main()函数的命令行参数*/{charin_fname[30];/*用户输入的要加密的文件名*/charout_fname[30];charpwd[10];/*用来保存密码*/if(argc!=4){/*容错处理*/usage(argv[0]);printf("\nIn-fname:\n");gets(in_fname);/*得到要加密的文件名*/while(*in_fname==NULL){printf("\nIn-fname:\n");gets(in_fname);}printf("Password6-8:\n");gets(pwd);/*得到密码*/while(*pwd==NULL||strlen(pwd)>8||strlen(pwd)<6){printf("Password6-8:\n");gets(pwd);}printf("Out-file:\n");gets(out_fname);/*得到加密后你要的文件名*/while(*in_fname==NULL){printf("Out-file:\n");gets(out_fname);}while(!strcmp(in_fname,out_fname)){printf("文件名不能和源文件相同\n");printf("Out-file:\n");gets(out_fname);}dofile(in_fname,pwd,out_fname);printf("加密成功,解密请再次运行程序\n");}else{/*如果命令行参数正确,便直接运行程序*/strcpy(in_fname,argv[1]);strcpy(pwd,argv[2]);strcpy(out_fname,argv[3]);while(*pwd==NULL||strlen(pwd)>8||strlen(pwd)<6){printf("Passwordfaied!\n");printf("Password6-8:\n");gets(pwd);}while(!strcmp(in_fname,out_fname)){printf("文件名不能和源文件相同\n");printf("Out-file:\n");gets(out_fname);while(*in_fname==NULL){printf("Out-file:\n");gets(out_fname);}}dofile(in_fname,pwd,out_fname);printf("加密成功,解密请再次运行程序\n");}}/*加密子函数开始*/voiddofile(char*in_fname,char*pwd,char*out_file){FILE*fp1,*fp2;registercharch;intj=0;intj0=strlen(pwd);fp1=fopen(in_fname,"rb");if(fp1==NULL){printf("cannotopenin-file.\n");exit(1);/*如果不能打开要加密的文件,便退出程序*/}fp2=fopen(out_file,"wb");if(fp2==NULL){printf("cannotopenorcreateout-file.\n");exit(1);/*如果不能建立加密后的文件,便退出*/}/*加密算法开始*/while(j0>=0){ch=fgetc(fp1);while(!feof(fp1)){fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*异或后写入fp2文件*/ch=fgetc(fp1);}j0–;}fclose(fp1);/*关闭源文件*/fclose(fp2);/*关闭目标文件*/}voidusage(char*name){printf("\t=======================Fileencryption======================\n");printf("\tusage:%sIn-fnamepasswordout_fname\n",name);printf("\tExample:%sfile1.txt12345678file2.txt\n",name);}

③ C++或C文件加密解密程序

在下面程序的基础上改写一下算法。 #include<stdio.h> #include<stdlib.h> #include<string.h> void encfile(char *in_filename,char *pwd,char *out_filename);/*对文件进行加密的具体函数*/ int main(int argc,char *argv[])/*定义main()函数的命令行参数*/ { char in_filename[30];/*用户输入的要加密的文件名*/ char out_filename[30]; /*用户输入加密后保存的文件名*/ char pwd[8];/*用来保存密码*/ if(argc!=4){/*容错处理*/ printf("\nPlease input In-filename:\n"); gets(in_filename);/*得到要加密的文件名*/ printf("Please input your Password:\n"); gets(pwd);/*得到密码*/ printf("Please input Out-filename:\n"); gets(out_filename);/*得到加密后你要的文件名*/ encfile(in_filename,pwd,out_filename);/*函数调用*/ } else{/*如果命令行参数正确,便直接运行程序*/ strcpy(in_filename,argv[1]); strcpy(pwd,argv[2]); strcpy(out_filename,argv[3]); encfile(in_filename,pwd,out_filename); } system("pause"); return 0; } /*加密子函数开始*/ void encfile(char *in_filename,char *pwd,char *out_file) { FILE *fp1,*fp2; register char ch; int j=0; int j0=0; fp1=fopen(in_filename,"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);/*关闭目标文件*/ }

④ 如何用C语言对文件进行加密和解密急求………………….

对于加密要求不高的完全可以自己定义规则来进行加密。这种加密是很简单很自由的,例如你在存文件的时候可以将文件中的每个字符都加上一个数,然后读取该文件的时候再每个字符相应地减去那个数,即可实现就简单的加密,这样你储存的文件看上去就是乱码了。只是这个规则太简单,规则你可以自己定,加密与解密对着来就行了。 下面程序用异或操作对文件进行加密和解密 /****************** 设计思路 ******************/// 根据用户输入的加密/机密密码,// 每次都拿原文件和密码等长度的一个字符串和密码// 对应元素异或进行加密/解密// 另外因为是用异或方法,所以加密和解密就是同一个程序// 即按照同样的加密即是对文件的解密#include <stdio.h>#include <string.h>#include <ctype.h>#include <conio.h>#include <stdlib.h>char filename[256]; // 原文件char password[256]; // 加密/解密密码const char filenametemp[] = "temp15435255435325432543.temp"; // 加密/解密中间文件void inputpass(char *pass); //密码输入以"******"显示void main() {FILE *fp; // 加密/解密的文件FILE *fptemp; // 加密/解密过程临时文件int pwdlen; // 密码长度int i = 0; // 计数器char ch = 0; // 读入的字符printf("请输入要加密/解密的文件名(全路径名): \n");gets(filename);if( (fp = fopen(filename, "rb")) == NULL) { printf("找不到文件 %s\n", filename); exit(1);} // ifprintf("请输入要加密/解密的密码: \n");inputpass(password);pwdlen = strlen(password);if(pwdlen == 0) { printf("密码不能为空,加密/解密失败\n"); exit(1);} // iffptemp = fopen(filenametemp, "wb"); // 打开中间文件while(1) { ch = fgetc(fp);// 从原文件读入一个字符 if(feof(fp)) { // 已经读到文件尾 break; // 退出循环 } ch ^= password[i++]; // 对原字符和密码进行异或操作 fputc(ch, fptemp); // 将异或结果写入中间文件 if(i == pwdlen) { // 使得原文件每和密码长度相同的固定长度异或加密 i = 0; }} // whilefclose(fp); // 关闭打开原文件fclose(fptemp); // 关闭打开中间文件remove(filename); // 删除原文件rename(filenametemp, filename); // 将中间文件重命名为原文件printf("加密/解密成功\n"); // 至此加密/解密成功}// 密码输入以"******"显示void inputpass(char *pass) {int i = 0;char c;while(isprint(c = getch())) { pass[i++] = c; // printf("*");}pass[i] = '\0';printf("\n");}

⑤ C语言 文件加密和解密

#include<stdio.h>void code(char *p,int key){ while(*p!制='\0') { *p=97+(*p-97+key)%26; p++; }}void uncode(char *p,int key){ while(*p!='\0') { *p=97+(*p-71-key)%26; p++; }}main(){ char str[100]; int n,key; printf("输入密匙:"); scanf("%d",&key); printf("输入1加密,输入2解密:"); scanf("%d",&n); printf("输入字符串:"); scanf("%s",str); if(n==1) { code(str,key); printf("密文为%s\n",str); } else if(n==2) { uncode(str,key); printf("原文为%s\n",str); }}

⑥ c语言文件加密和解密

没时间写代码。简单的加密大概就是从需要加密的文件中一个个读取字符专,然后对该字符进行加密算属法(可以进行异或什么的),把处理后的字符存入另外一个人文件。这其中也就涉及到简单的文件操作,不会太难,楼主最好自己写吧解密也是一个思路,就是反向的读取另外一个文件,把加密的算法倒过来算就行了。

⑦ C语言编程:文件加解密

C语言编程:文件加解密

⑧ 关于用C语言对文件进行加密和解密

ch=ch^*(pwd+i); //对读取的一个字符,进行异或重点是这,,,,,,就是使用密码,对源文件逐byte异或、if(i>9){i=0;}密码也循环使用。~~~~~~~~~~~~

⑨ C语言 文件加密解密

根据你的需要,修改了之前的代码。

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>constunsignedintMAX_KEY_LENGTH=1000;intencode(charconst*datafile,charconst*keyfill);intdecode(charconst*datafile,charconst*keyfile);intloadKey(charconst*keyfile,int*keys,unsignedintsize);intsaveKey(charconst*keyfile,int*keys,unsignedintsize);intgenerateKey(int*keys,unsignedintsize);intmain(intargc,charconst*argv[]){chardatafile[]="encrypted.txt";charkeyfile[]="key.txt";intretcode,choice,loop=1;charch[5]={''};while(1){printf("1.Encryption.
");printf("2.Decryption.
");printf("3.Exit.
");printf("Selection(1,2,3):");fgets(ch,sizeof(ch),stdin);sscanf(ch,"%d",&choice);switch(choice){case1:retcode=encode(datafile,keyfile);if(retcode!=0)printf("error,%d",retcode);break;case2:retcode=decode(datafile,keyfile);if(retcode!=0)printf("error,%d",retcode);break;case3:loop=0;break;default:;break;}if(0==loop)break;}return0;}intgenerateKey(int*keys,unsignedintsize){charstr[]=",./;"'<>?";size_tstr_len=sizeof(str)/sizeof(str[0]);inti;srand(time(NULL));for(i=0;i<size;++i)keys[i]=str[rand()%str_len];return0;}intloadKey(charconst*keyfile,int*keys,unsignedintsize){inti=0;FILE*pfile;intretcode=0;pfile=fopen(keyfile,"r");if(pfile==NULL)return-1;while(!feof(pfile)){if(i<size)fscanf(pfile,"%d",&keys[i++]);elsebreak;}fclose(pfile);returni;}intsaveKey(charconst*keyfile,int*keys,unsignedintsize){FILE*pfile;inti;pfile=fopen(keyfile,"w");if(pfile==NULL)return-1;for(i=0;i<size;++i){fprintf(pfile,"%d",keys[i]);}fclose(pfile);return0;}intencode(charconst*datafile,charconst*keyfile){charoriginal[MAX_KEY_LENGTH]={''};charencrypted[MAX_KEY_LENGTH]={''};inti,size;intkeys[MAX_KEY_LENGTH];FILE*pdatafile,*pkeyfile;pkeyfile=fopen(keyfile,"w");if(NULL==pkeyfile)return-1;fclose(pkeyfile);puts("inputmessage:");gets(original);size=strlen(original);if(0!=generateKey(keys,size))return-2;if(0!=saveKey(keyfile,keys,size))return-3;pdatafile=fopen(datafile,"w");if(NULL==pdatafile)return-4;for(i=0;i<size;++i){encrypted[i]=original[i]+keys[i];fputc(encrypted[i],pdatafile);fputc(encrypted[i],stdout);}printf("
");fclose(pdatafile);return0;}intdecode(charconst*datafile,charconst*keyfile){FILE*pdatafile,*pkeyfile;intkeys[MAX_KEY_LENGTH]={0};charoriginal[MAX_KEY_LENGTH]={''};charencrypted[MAX_KEY_LENGTH]={''};inti,size;pkeyfile=fopen(keyfile,"r");if(NULL==pkeyfile)return-1;fclose(pkeyfile);pdatafile=fopen(datafile,"r");if(NULL==pdatafile)return-2;fscanf(pdatafile,"%s",encrypted);fclose(pdatafile);size=loadKey(keyfile,keys,MAX_KEY_LENGTH);if(size<1)return-3;for(i=0;i<strlen(encrypted);++i){original[i]=encrypted[i]-keys[i];fputc(original[i],stdout);}printf("
");return0;}

运行结果:

1. Encryption.2. Decryption.3. Exit.Selection (1,2,3):1input message:this is A test!╓┐»╞Lñ╗ù|t▄╬╢╒è1. Encryption.2. Decryption.3. Exit.Selection (1,2,3):2this is A test!1. Encryption.2. Decryption.3. Exit.Selection (1,2,3):3


赞 (0)