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

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

发布网友 发布时间:2022-04-22 15:38

我来回答

3个回答

热心网友 时间:2023-11-11 02:13

  文件分为文本文件和二进制文件。加密方法也略有不同。
  1、文本文件
  加密的主要是文本的内容,最简单的方法就是修改文档的内容,比如1.txt中的文件内容:
  abcd
  只要给每一个字符+1,就可以实现加密。文件内容即会变为
  bcde

  2、二进制文件加密
  二进制文件加密也就是对应用程序加密,需要理解可执行文件格式,比如Windows平台的Exe文件它是PE结构,Linux上的可执行文件是ELF结构,要对这样的程序进行加密,实际上是开发一种叫做“壳”的程序,这种程序的开发,需要将扎实的底层基础,同时也需要对软件加密解密有细致的理解,比如流行的vmprotect、z壳以及早些年的upx壳、aspack等等。

  3、无论哪种加密都牵涉到文件操作的问题,使用C语言进行文件操作时,极少使用C标准库中的I/O函数,大多数使用操作系统提供的内存文件映射相关的API函数,有兴趣,可以搜索相关的资料。

热心网友 时间:2023-11-11 02:13

对于加密要求不高的完全可以自己定义规则来进行加密。这种加密是很简单很自由的,例如你在存文件的时候可以将文件中的每个字符都加上一个数,然后读取该文件的时候再每个字符相应地减去那个数,即可实现就简单的加密,这样你储存的文件看上去就是乱码了。只是这个规则太简单,规则你可以自己定,加密与解密对着来就行了。
下面程序用异或操作对文件进行加密和解密
/****************** 设计思路 ******************/
// 根据用户输入的加密/机密密码,
// 每次都拿原文件和密码等长度的一个字符串和密码
// 对应元素异或进行加密/解密
// 另外因为是用异或方法,所以加密和解密就是同一个程序
// 即按照同样的加密即是对文件的解密

#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);
} // if

printf("请输入要加密/解密的密码: \n");
inputpass(password);
pwdlen = strlen(password);
if(pwdlen == 0) {
printf("密码不能为空,加密/解密失败\n");
exit(1);
} // if

fptemp = fopen(filenametemp, "wb"); // 打开中间文件
while(1) {
ch = fgetc(fp);// 从原文件读入一个字符
if(feof(fp)) { // 已经读到文件尾
break; // 退出循环
}
ch ^= password[i++]; // 对原字符和密码进行异或操作
fputc(ch, fptemp); // 将异或结果写入中间文件
if(i == pwdlen) { // 使得原文件每和密码长度相同的固定长度异或加密
i = 0;
}
} // while

fclose(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");
}

参考资料:http://hi.baidu.com/mltong2008/blog/item/653696f0e22337cb7931aafc.html

热心网友 时间:2023-11-11 02:13

简单加密用异或……不过如果不用异或的话
我以前的想法是按位取反,或者是循环左移/右移特定位数
但是还是比较容易破解的
http://www.mouldsky.com/thread-72973-1-1.html
这儿介绍了一点加密方法
另外可以找找其他的专门的加密算法比如rsa,md5或者des
以前做课设的时候考虑过给记录文件加密的问题,但是上面的算法太复杂短时间调试不来就放弃了直接用了异或,囧
pudn上都有的
如果需要源文件可以hi我,我发给你
用C语言给文件加密解密,详细简单的代码;;;用c打开一txt文件,怎么写...

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); //加密算...

写一个加密程序,命名为encrypt-学号.c

c语言文件加密和解密方法如下: 1、首先打开VC++6.0; 2、选择文件,新建; 3、选择C++ source file 新建一个空白文档; 4、声明头文件 #include #include #include 首先写个加密函数,算法就是简介里说的; void EncryptFile(FILE *sfp,FILE ...

谁可以给我一个c语言写的DES代码,要求(输入任意一个字符串,可以得到相 ...

unsigned char* outdata,unsigned long* outlen,unsigned char* iv);//加密unsigned char unDES_cbc(unsigned char* indata,unsigned long inlen,unsigned char key[8],\ unsigned char* outdata,unsigned long* outlen,unsigned char* iv);//解密unsigned char enDES(unsigned char* indata,unsigned long in...

...并将结果写入在D盘T.TXT文件,用C语言代码编写

void main(){ int i,a=1,sum=0;FILE *fp;for(i=1;i&lt;11;i++) //求和运算,不用递归比较简单。{ a=i*a;sum=sum+a;} printf("1!+2!+3!+4!+5!+6!+7!+8!+9!+10!= %d \n",sum);if((fp=fopen("D:\T.txt","w"))==NULL) //建立文件t.txt { print...

学C语言编程、文件加密作业中,想用 文件命令 打开指定的 TXT文本,提...

include &lt;stdlib.h&gt; //为了使用exit()int main(){ char ch;FILE* fp;char fname[50]; //用于存放文件名 printf("输入文件名:");scanf("%s",fname);fp=fopen(fname,"r"); //只供读取 if(fp==NULL) //如果失败了 { printf("错误!");exit(1); //中止程序 } //getc()用于在...

如何用c语言删除一个.exe的文件?

可以用linux指令

怎么用c语言对.bin的文件中的内容copy到一个.txt文件中

用二进制的形式把bin文件打开 fopen("XXX.bin", "rb");创建一个txt文件fopen("XXX.txt", "wb");然后读取 bin文件内容 并判断是否为EOF while (fread()!=EOF)将读出的字符串写入新建的txt文档 fwrite 循环结束后 关闭俩文件 fclose ...

21. (1.5分) 下列叙述中正确的是( )。 (A) C语言的预处理功能是

答案是:C A 不对。C语言的预处理功能包括:1.宏定义 2.文件包含 还有3.条件编译 等 B 不对。宏定义和文件包含指令只要在函数代码使用宏或调用包含文件中的变量、函数之前写好,一般在文件首部;但条件编译指令通常在代码中间;其它指令也不需在首部。C 正确。D 不对。C语言的编译预处理内容不...

c语言程序扩展名为.c,它属于A.可执行文件B.目标文件C.文本文件D.库文件...

C 可执行文件是编译链接之后的文件一般是exe结尾,目标文件是编译还没有链接的一般是.o之类的扩展 文本文件我们可以打开来直接看可以理解的 库文件是编译链接之后的另外一种文件,仅含有相关的代码只能被别人调用实现对应功能。

如何给.BAT文件加密

echo 说明: 在下面输入需要加密的批处理文件名 echo.echo 若在此文件的同目录下直接输入“文件名.bat”即可 echo.echo 也可以带路径指定任意BAT echo.echo 加密完成后会在同目录下生成“加密成品.bat”文件 echo.echo.echo.echo.set /p file=请输入需要加密的批处理后(名+后缀)按回车键(...

用c语言给文件加密 excel加密文件怎么解密? 加密文件夹怎么解密 pdf加密文件怎么解密 电脑文件加密后怎么解密 word加密文件怎么解密 加密文件如何打开 文件夹加密码怎么解密 文档加密如何解除
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...的连不上无线网了 显示的区域中找不到无线网络 客车和货车同时从甲、乙两地相向而行,在距中点6千米处相遇,已知货车速 ... 客车和货车同时从甲乙两地开出 在离中点45千米处相遇 客车和货车速度比... ...乙两地相向而形,在离中点45千米处相遇,客车和货速度比是3:2,甲... ...以两地相向而行,在距离中点45米处相遇,客车和货车速度比是3:2,甲乙... 客车和货车同时从甲乙两地相向而行,在离中点45千米处相遇,客车与货车速 ... 客车和货车同时从甲、乙两地相向而行,在离中点45千米处相遇,客车和货车... 冒险岛弓箭手前期后期怎么打别的职业。 冒险岛 最新 弓箭手全攻略 冒险岛弓手击退箭有必要加吗 文本文件被加密了,,全是字母,有什么方法和工具破解 404 Not Found 如何将TXT文件变成加密文件,而不影响功能?? 文件夹加密 如何快速破解RAR加密文件 如何加密df文档 在线销售 请电脑高手告诉我怎样在文件或文件夹上加密 怎样可以把文件夹和word文档加密? 怎么给pdf加密 acrobatdf不许打印修改复制 怎样给文档加密? 腾讯大王卡 如果 用了 欠费了 不去注销 扔了 会有什么后果 实名制了 热带雨林有什么神秘之处? 马来西亚十大必去景点有哪些? 马来西亚的天气有什么特点? 马来西亚婆罗洲热带雨林的树冠走道具体在哪里?如果要去,怎么去? 404 Not Found 亚马孙热带雨林有哪些珍贵品种 马来西亚为什么是热带雨林气候却分明显的干湿季 《热带雨林历险记》中热带雨林位于地球的()附近 热带雨林气候包括哪些国家 请哪位大神告知下磁盘加密的技术原理如何实现的呢? 文件加密解密问题 CNC和NC有什么区别? cnc和nc代码有何区别? 什么是NC车床,与CNC车床有什么区别 数控机床的NC和CNC系统有何不同 什么是cnc系统,它与nc的区别是什么 数控机床的NC和CNC系统区别在哪些方面 NC和CNC的区别 NC机床和CNC机床有啥区分? 数控中的NC,CNC,DNC分别是什么意思 学校不让我们报英语四级考试,我们可以自己报名吗? DNC与CNC的区别是什么? 学校不让我们报英语四级考试,我们可以自己报名吗? NC和CNC的区别 大学英语四级要在学校里面报考还是自己报考? 英语四级考是自己报名还是学校统一报考 英语四级如何报名 英语4级可以自己报名吗? 英语四级报名出现名额暂满但自己还想报名应该怎么办?