在数字时代,数据安全变得越来越重要。为了保护敏感信息,决定编写一个简单且直观的文件加密工具。这个工具使用Blowfish加密算法来加密文本和二进制文件。它还可以创建自解压的加密文件。如果对如何创建自解压可执行文件感兴趣,可以查看另一篇文章《创建自解压可执行文件》。
文件加密工具具有以下特点:
文件加密工具使用原生C++编写,仅使用ATL进行窗口类处理。ATL的使用非常少,即使是不熟悉该库的人也应该能够理解代码。
文件加密工具被划分为几个小项目:
为了节省时间并拥有一个通用目的类的中心点,正在使用一个名为GenLib的静态库。这个版本的GenLib包含了以下通用目的类:
所有这些类都在GenLib命名空间下。
在FileEnc项目中有一个名为EncryptionInterface的接口,实现这个接口可以轻松更改工具使用的加密方式。实现这个接口只需要流密码实现,并且可以节省处理文件的开销。Blowfish实现是静态链接到工具中的,以避免通过更改DLL进行黑客攻击。只需几分钟的工作,工具就可以支持在运行时根据用户决定加载的多个加密DLL。
为了使工具尽可能安全,尝试在应用程序关闭时从内存中擦除信息。在查看源代码时,可以看到使用了ZeroMemory API和其他一些API来从内存中删除信息(如使用的密码)。在加密文件时,可以勾选“处理后擦除源文件”复选框,以确保正在加密的文件不可访问。
解密不验证密码的正确性(信息被加密而没有添加任何关于文件的信息)。因此,使用错误的密码解密时,将收到一个包含垃圾内容的文件 - 这不是一个错误。文件加密基于密码长度 - 更长的密码等于更好的安全性。尽管相信文件擦除方法是相当安全的,但为了100%确定,应该使用专门用于此目的的产品。