加密程序

说到加密程序,要数去年全球流行的“永恒之蓝”勒索病毒了,感染该病毒的个人计算机,当中的文件无一例外的被被一组特殊的编码加密了,并且如果想解锁被加密的文件,就必须向黑客支付比特币,从目前来看,“永恒之蓝”加密的文件很少有被恢复的,被加密的文件逃不过被删除的命运。

那么,文件加密是什么原理呢?难不难呢?小编今天就告诉你,它的原理还是挺简单的,并且实施起来更简单,接下来小编就教大家用C语言编写一个文件加密程序,这个加密程序任何文件都能加密哦!可以将我们的敏感文件进行加密防止泄露,也可以用在某些好玩的地方。

上教程

小编最近今天在写一个程序,这个程序能将整个文件夹里面的所有同类型的文件进行加密,而现在小编就将这个程序的文件加密部分给大家讲解一下,明天小编会发布“加密整个文件夹程序”的文章,关注《一碳科技》有干货哦!

头文件

我们暂时需要用到三个头文件,分别是io.h、stdlib.h、iostream,io.h头文件中有许多我们需要用到的文件文件操作函数,除了这个之外stdio.h这里面也有很多文件操作函数,iostream是C++的标准库文件,C++在某些方面用起来是要比C语言轻松的,所以小编选择用部分C++来编写我们的加密程序。

数据转移

小编在这里用到了两个数组,一个数组用来存放文件的初始数据、一个用来存放文件加密后的数据,先用fread()二进制的形式读取被加密文件,并将数据存放到buf[]这个数组之中,然后再通过对buf[]中的数据进行一定形式的编码,来达到加密原数据的目的。小编的加密形式是这样的:对buf[]中的每一个元素加1,为了便于大家理解小编就简单的“加密”就行了,各位看官也可以自行制定自己的加密规则。

文件加密函数

小编给加密函数命名为Encrypt(),这个函数小编设计的是无参数、无返回值的,是为了配合文件名遍历使用的,所以这个函数被设计成了这样。

首先,在开头现将文件名遍历获取到的文件名和文件路径拼接起来,而拼接起来会使strcat()第一个参数的数据发生变化,因为拼接的结果被存放在第一个参数里面了,因为我们这里需要打开两个文件,一个是被加密的文件,一个是被加密之后的文件(新建的),这两个文件的路径都相同,只是文件名有区别,所以小编需要用到两个变量来保存路径,防止路径变化,具体看下图↓

其中,小编用到了一个复制数组的函数,和还原数组的函数,复制数组就是将B数组的数据复制到A数组中,还原数组函数就是将数组元素全部以'\0'填充。这两个函数的实现特别简单,如下图↓

写入数据

读出和写入数据要用到fread、fwrite函数,这两个函数不是很难,一般百度都可以找到,参数和返回值的使用也很简单,所以小编在这里就不过多阐述了,就将实现过程给大家贴出来。

U盘一键拷贝

明天小编会写一个U盘一键拷贝的程序,功能是这样的,将U盘插入电脑,就会自动的复制指定类型的文件,获取文档必备技巧,尤其是别人不想给你的时候!教程会在后天发布,所以请关注《一碳科技》吧,会有源码分享哦!

查看原文 >>
相关文章