不关注《一碳科技》?那你会错过很多干货哦!

文件批量加密

今天《一碳科技》给大家带来了一篇“批量加密程序”的制作教程,这个程序说简单也简单,说难也难,简单是因为这个程序使用到的函数或者知识点并不是很多,对于一些基础不是太好的小伙伴来说,难的点就在于文件的遍历与文件加密、文件重命名之间的配合,但有可能是小编写得有点晦涩难懂的原因,如果各位看官有什么更好地解决办法可以在评论区留言哦!

上教程

本次教程小编使用三个文本文件做测试,但小编今天教大家做的批量加密程序可以加密任何文件!也就是只要你有访问权限你就可以加密任意文件,只要它储存在电脑上,为什么呢?因为我们将以二进制的形式对被加密文件进行读取写入,而二进制则是计算机中储存数据的最基本形式。

头文件

我们将用到stdio.h、io.h、string.h这三个头文件,因为我们将用到文件操作函数he字符串操作函数,在io.h中我们会用到fread()fwrite()函数,这两个函数的功能分别为向文件流中读取数据、先指定文件中写入数据块,这两个函数非常的像,fread()接受4个参数,分别为存放读取数据的缓冲区地址、每一项数据的字节数、读取数据的项数、输入流。fwrite()也接受4个参数,岑别为存放欲写入数据的缓冲区地址、每一项数据的字节数、读取数据的项数、输出流。这么跟大家说可能会有点难以理解,但是仔细看一下下图的代码就会明白了↓

加密函数

小编的思路是这样的,先以二进制的方式读取被加密文件里面的数据,然后将这部分读取出来的数据进行加密,怎么加密呢?就是将这部分二进制数据以某种方式重新 编码,例如对每个二进制数加1或者是其他的操作,小编这里就简单的加1就行了。

先将原数据读取出来,保存在一个数组里面,然后对这个数组的每一个元素加1,之后将这个数组的数据复制到另一个数组里面,再将这个新的数组里面的数据输出到文件中,输出完成之后删除源文件,并将加密过后的文件以一定的格式重命名,这一样来,源文件就变成了一个被我们加过密的文件。

打开被加密的文件

先用fopen()打开被加密文件,并将返回的文件指针存放到outfile当中,接下来就进行字符串处理工作,之后将处理过后的字符串作为加密过后的文件的文件名进行创建文件,并将返回的文件指针凡在infile当中。在字符串处理过程中需要用到数组复制、数组还原(全部填充'\0')两个函数,这两个函数由我们自己来编写,非常简单,看下图就明白了↓

因为我们需要不断循环的遍历文件夹,每获取一个文件名,我们就要以这个文件名作为参数来进行加密,所以文件的路径是一直不变的,但是我们的文件名又要以文件路径为基础进行拼接,而拼接之后的文件路径就会改变,这并不符合我们的要求,所以我们需要一个“介质”用来储存路径,当文件名和文件路径拼接之后,我们还能使用这个介质还原文件路径,小编表达得可能不太清楚,所以各位看官慢慢看一下代码就知道小编的意思了。

循环加密

打开加密文件之后,我们就要读取数据进行加密了,在这里对每一个数组元素加1,然后再将改变过后的数组数据输出到新的文件中,这个文件存放被加密的数据。如果想要还原这些被加密的数据的话,很简单,只需要向原来加密方式的反方向执行就OK了,打个比方,你对每个数据加1加密,解密就是对每个数据减1。

上面图中的两个函数非常简单,而且参数和用途也已经跟大家说了,就在文章的上面部分,所以这里就不多讲了。

最后删除被加密文件

这里要注意一点,想要删除文件就必须先使用fclose()关闭刚才打开的文件输入流,否则删除不成功。删除文件会使用到remove()函数,很简单,它接受一个参数,这个参数就是文件名、或者目录,如果参数为一文件名,则调用unlink()处理,若参数 为一目录,则调用rmdir()来处理,unlink()、rmdir()两个函数可自行百度。

源码获取

关注《一碳科技》然后在评论区留言,小编会在评论区留下源码地址。

查看原文 >>
相关文章