制作加密软件,首先是核心的加密算法,著名与应用最广的可能是des加密算法,不过作者并未采用该算法作为核心,而是采用字符替换的动态密钥数组,这样维护起来将更加容易,而且因为与密钥文件绑定,破译难度一样不小,应对一般应用来讲绰绰有余,当然了,如果别人下了心要获取你的秘密,恐怕任何人做出的算法都无法抵挡利益的诱惑。
加密棒V1.01的密钥数组从一个2维的ASCII码表中随机抽出256个字符码组成加密矩阵,然后读取整个文件,全覆盖替换其中内容,所以该加密方式对于大文件而言,加密或许稍微慢了点,作者测试过,一个5M的文件,在一台一般配置的机器上,需要4点几秒才能加密完成,这将是下一版本需要优化的地方。
算法就这样了。
加密核心的组成除却加密算法,剩下就是文件的处理这块,平常处理文件用的滚瓜烂熟的几个库函数现在貌似不够用了,但是做完后其实也就几个函数(人懒,技术也跟不上,就不敢妄自重写库函数了。。。),罗列如下:
常用C库函数
fopen fwrite fread feof fclose #include <stdio.h>
文件查找
_findfirst _findnext _findclose #include <io.h>
文件操作
_dup _dup2 _fileno rename remove mkdir #include <io.h> #include <direct.h>
文件属性
stat #include <sys/stat.h>
以上就是加密棒在核心部分用到的文件处理所有函数,可见,玩转文件需要掌握的东西其实也不多,原谅作者没细细将每个函数的用法写出来了,有兴趣的朋友可搜索一下,网上资源那是相当的多啊。
加密棒核心部分使用了多线程的处理方式(其实就2个。。。扩展,一定要扩展),一谈到多线程,同步就是离不开的话题了,同步锁用起来有多烦人,相信大家深有体会,现在就将鄙人模仿ACE自己封的同步锁贡献出来大家试用(写的不好别拍砖哈,拍点黄金啥的可以接受),比起直接用API确实方便很多,尤其是哪个守卫,真的是个好东西。
WJH_Mutex.h
main.cpp
好了,今天的分享就是这样了,非常感谢大家审阅,再会~