MFC | 图片的傻瓜式加解密方法
说起了加密算法,不得不提一句,在软件设计师考试中就考到了这一点,例如:对称加密算法有哪些,非对称加密算法有哪些,密钥算法有哪些已经实现思路。
在这里,不讲那么复杂的方式,在前一段时间非要实现这样一个功能:图片加解密方法,想要快速演示,没有办法了,我就稍微偷了个懒,反正只是演示,看看效果得了,其实,我的内心也是很无语的。
实现思路
一般在使用加密的时候采用各种算法,这次我没有用那么高深的技术,我只是在读取图片数据时,前面添加了些内容,人为破坏了图片流的格式,这样子,再打开时,就看不到图片的内容了。
中心思想
数据流开头,数据流末尾分别添加固定的头数据、尾数据,并且对前十位数据块进行加密操作。
我猜肯定没有人会做到我这么鸡肋,如果想要看我这么鸡肋的做法,那就继续看下去吧!
在实现过程中,唯一的重点就是:读文件,写文件
所有的文件在 C++程序中,都可以使用二进制流的方式读取,这里,我们也采用的二进制流方式。
读文件操作
打开文件 -> 读取文件的长度 -> 获取文件的实际内容 -> 数据组装 -> 关闭文件
使用 C 底层的访问方式,FILE::fopen 打开文件,并且以二进制流的方式读取。
此时,我们可以得到当前文件的整体长度,紧接着,我们要拿着文件的长度,读取整个文件内容
到这里,已经可以获取到整个文件的内容了。
上述已经说到了,这里采用了傻瓜加密算法,在数据流开头以及结尾处,添加了固定头信息。
那么该如何操作呢?
这里,我们重新 new 一个与读出的文件相同的内存,用来存放:数据头 + 真实数据 + 数据尾。
两个数据头 和 一个数据尾。
那么,文件的实际数据如何拼接到 chReadInfo 呢?
对于 char*数据的内容,一般会采用 memcpy 方式。
最后,关闭读取文件。
当前,要是为了更安全操作,还可以对组装的数据进行加密处理,比如我们经常用到的 base64 加密算法。
写文件操作
对于写文件来说,会简单不少,直接使用 fwrite 写入就可以了
对于解密操作,我们该如何获取呢?
在读取加密的文件后,假设你对该文件做了类似于 base64 加密算法时,需要先将数据流进行解密,然后,筛选出数据数据。
其实,就是去掉两个字节的头数据以及最后一个尾数据,还是采用 memcpy 方法。这里也就不再过多说明啦!
我是中国好公民 st,一名 C++开发程序媛~
版权声明: 本文为 InfoQ 作者【中国好公民st】的原创文章。
原文链接:【http://xie.infoq.cn/article/c5cdfe772efee5dba74459539】。文章转载请联系作者。
评论