用C语言对文件进行简单加密的操作,这里主要用的加密思路是破坏文件头,使得系统无法识别文件从而进行加密,最初的思路是将用户输入的加密口令转成ASCII码,再与文件头数据循环进行异或操作,从而破坏文件头数据,使得系统无法识别文件,而从安全性上来说,就算破译者拿到了用户的口令,他也无法知道我们拿了多少数据进行异或,从而提高了加密文件破译的安全性,若需要破译加密文件,不仅需要拿到用户的口令,在不知道具体加密数据位数时,只能对加密文件进行爆破异或,所以这种加密方式具有一定的安全性。
在具体实现的时候,以下仅给出最简单的实现方式,仅对文件头的20个字节的数据进行异或操作,且为了方便起见,这里假设用户的加密口令就是123,指定1.bmp文件进行加密和解密操作。本代码仅作加密文件思路参考,各位大佬可以根据自己的情况和需要加以补充,希望能对各位有所启发。
本文仅提供C语言简单加密文件的基本思路,我的后一篇文章对本代码的加解密算法进行了完善和补充,增强了加密文件的安全性,我本人更为推荐,这里放一个链接,需要的朋友也可以看一下C语言简单加密文件+

#include<stdio.h>
//全局变量的定义
unsigned short int res[10]; //储存加密后的数据,一个unsigned short int占两个字节
unsigned short int temp; //临时储存非加密数据
int length; //储存原文件长度
int i=0;
void encrypto()
{
FILE *fp1=fopen(“1.bmp”,“rb”); //这里可以改为用户输入路径文件,本程序为了便捷就固定了文件名
if(fp1!=NULL)
{
for(i=0;i<10;i++){
fread(&res[i],sizeof(unsigned short int),1,fp1); //从原文件种读取20个字节
res[i]^=123; //将读取出的数据与用户输入的密钥做异或,粉碎文件头
} //这里为了方便起见假设用户加密口令为123
//获取BMP原文件长度
fseek(fp1,0,2); //使文件光标退到文件结尾
length=ftell(fp1); //放回文件长度
fclose(fp1);
FILE *fp2=fopen(“2.bmp”,“wb”); //这里也可以改为用户输入的路径
fp1=fopen(“1.bmp”,“rb”);
if(fp2!=NULL)
{
for(i=0;i<10;i++){
fwrite(&res[i],sizeof(unsigned short int),1,fp2);//将异或后的数据存储在新文件中
}
fseek(fp1,20,0); //将原文件的文件指针向后移动20个字节
while(i<length/2) //循环将fp1的非加密数据写入fp2中
{
fread(&temp,sizeof(unsigned short int),1,fp1);
fwrite(&temp,sizeof(unsigned short int),1,fp2);
i++;
}
fclose(fp1);
fclose(fp2);
printf(“加密成功!请牢记您的加密口令\n”);
}else{
printf(“保存加密文件失败!\n”);
}
}else{
printf(“打开文件失败!\n”);
}
}

void decrypto()
{
FILE *fp1=NULL,*fp2=NULL;
fp1=fopen(“2.bmp”,“rb”); //打开加密文件
fseek(fp1,0,2); //使加密文件的光标移动到文件末尾
length=ftell(fp1); //获取加密文件的长度
rewind(fp1); //使加密文件的光标移动到文件开头
for(i=0;i<10;i++){ //
fread(&res[i],sizeof(unsigned short int),1,fp1); //从加密文件中取出要解密部分的数据
res[i]^=123;
}
fp2=fopen(“3.bmp”,“wb”); //fp2为解密文件指针
for(i=0;i<10;i++)
{
fwrite(&res[i],sizeof(unsigned short int),1,fp2); //写入解密后的数据
}
fseek(fp1,20,0);
i=0;
while(i<length/2)
{
fread(&temp,sizeof(unsigned short int),1,fp1);
fwrite(&temp,sizeof(unsigned short int),1,fp2);
i++;
}
printf(“解密成功!\n”);
}

int main()
{
encrypto();
decrypto();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
接下来我们运行这个代码:

可以看到以及生成了两个文件,分别是2.bmp(加密文件)和3.bmp(解密文件),我们利用winhex查看文件头

不难发现对于2.bmp文件的文件头已经无法识别,而3.bmp文件的文件头于原文件(1.bmp)一致,通过查看图片属性也能发现这三个bmp文件的大小完全一致,所以不存在数据的损失,而当你打开2.bmp文件的时候,却会发现

系统已经无法识别和显示出加密文件,至此,我们利用C语言对文件进行加密和解密的操作全部完成。希望能为各位大佬抛砖引玉。

再次感谢你的观看,若还有疑问,欢迎评论留言。

点赞
87

评论
20

分享

收藏
486

手机看

关注
C语言实现简单加密程序04-09 我自己初学C语言时实现的一个维吉尼亚加密程序代码,暂时不支持处理中文。
一只在校程序猿的技术贴
1万+

C语言文字加密程序的实现
前言:当今社会是一个信息社会,你的个人信息和聊天记录极有可能被别有用心的人时时刻刻监视着,那么你想不想实现专属于两个人或一个小圈子的人在社交软件上的交流不被任何其他人读懂呢?下面就给大家提供一个原理极其简单程序极其容易实现的C语言文字加密小程序的实现算法。原理:ASCLL码的加减乘除运算。举一个最简单的例子,从键盘输入一行字符"LANGUAGE",将所有字符的ASCLL码加1后再打印出来就变成…

用c语言对文件进行加密相关推荐

  1. c语言编程文件的加密解密,C语言实现任何文件的加密解密功能

    本文实例为大家分享了C语言实现文件加密解密功能的具体代码,供大家参考,具体内容如下 使用命令提示符,实现任何文件的加密和解密功能. 代码如下: //#define _CRT_SECURE_NO_WAR ...

  2. C语言实现文件的加密解密

    闲来无事,随手翻了翻桌面上的C语言教程,意外发现了这段代码,就上机玩弄了一番,感觉有点实用性,写了点注释分享给大家.若有理解不到位的地方,还请大家批评指正 . #include<stdio.h& ...

  3. 如何用C语言对文件进行简单加密

    最近在完成大作业的时候需要实现一个用C语言对文件进行简单加密的操作,这里主要用的加密思路是破坏文件头,使得系统无法识别文件从而进行加密,最初的思路是将用户输入的加密口令转成ASCII码,再与文件头数据 ...

  4. 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )

    文章目录 一.导入第三方库头文件 二.头文件说明 1.兼容 C++ 语言 2.头文件导入限制 3.加密解密函数说明 一.导入第三方库头文件 对文件进行加密 , 将文件中的数据分成若干块 , 一块一块的 ...

  5. 【C 语言】文件操作 ( 文件加密解密 | 加密文件 )

    文章目录 一.文件加密解密操作 1.加密整 4096 字节的数据 2.加密小于 4096 字节的数据 二.完整代码示例 1.文件加密操作 2.DES 加密解密头文件 3.第三方 DES 加密解密函数库 ...

  6. c语言程序存为bin程序,对文件进行加密与解密(c语言)-bin文件打开

    操作界面 加密前的文件: 加密后的文件 将加密后的文件解密后即可还原 初始密码为:hujing 开发环境:vc6.0 操作系统:windows 源代码 /*********************** ...

  7. 【C语言项目实战】C语言实现文件加密

    文章目录 文件加密 案例描述 案例分析 案例实现 案例代码 文件加密 案例描述 近些年来,因为信息泄露造成财产损失的事件时有发生.随着科技的发展,信息的传播与获取越来越方便,为了防止因信息泄露造成的各 ...

  8. C语言程序设计-文件加密系统01

    题目:文件加密系统 [问题描述] 文件的传输会有明文和密文的区别,明文发送是不安全的,用一个程序实现发送文件的加密和解密操作.加密算法,密钥设计由同学自己选择现有的加密解密算法或是自己设计. [基本要 ...

  9. C语言中文件的基本操作函数fprintf和fscanf实例介绍

    C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分 ...

最新文章

  1. valgrind——Cachegrind分析CPU的cache命中率、丢失率,用于进行代码优化。
  2. javascript身份证号码验证函数支持带x
  3. v9php 碎片信息,phpcms v9碎片管理及调用技巧分享
  4. 企业云桌面-07-安装虚拟机-001-Win701
  5. MATLAB从入门到精通:MATLAB识别 自带手写数字集的CNN(LeNet5)
  6. 哈工大计算机系女生的宿舍,哈工大的硕博士们,这次被学校折腾惨了!
  7. html霓虹灯效果图,HTML5 SVG+CSS3霓虹灯文字边框动画特效
  8. express 项目生成器_用于项目的Express模板生成器(2)| 应用程序结构研究
  9. 31 SD配置-主数据-信用管理-定义自动信贷控制
  10. 一头感动了全中国的“猪”!感动了全世界!泪奔
  11. Hibernate工作流程及与 MyBatis的比较
  12. python怎么排名次_2019:python第3次获得TIOBE最佳年度语言排名
  13. html中pre的作用是,HTML pre 标签与code标签的作用与用法
  14. CSS YUI reset
  15. word插入公式/endnote
  16. 开源CRM系统国内有哪些品牌做的好?
  17. Nacos注册中心和配置中心
  18. 解决Win10图片打开方式没有“Windows照片查看器”问题
  19. 《带你学C带你飞》—— SE54位操作
  20. linux 常用命明

热门文章

  1. 国内图像处理相关期刊
  2. 界面原型设计工具开源软件
  3. Python教程 - Django
  4. 天津铸源宝利缘系统成立仪式在津召开
  5. 【小麦苗课堂】高可用培训(RAC+DG+OGG)--包括11g、12c、18c、19c等版本
  6. 2023年整理:吉利车机安装安装第三方软件教程,笔记本或手机操作方法!
  7. 计算机教师职业幸福感,教师职业幸福感
  8. 中远通在创业板IPO过会:前三季度收入11亿元,罗厚斌为董事长
  9. PR和AE有什么区别?
  10. 美国白宫将探讨人工智能 概念股分析