在Windows中有很多文档本身是可以通过程序设计密码的,当用这个程序打开该文件时,程序会提示用户输入密码,只有输入正确的密码,程序才能正确打开文件。
很多带有密码的文档,其数据也是加密的,并且加密的参数与密码有关。这样一来,即使我们找到了密码的位置,将密码清空或替换掉,由于不知道原来的密码,所以加密后的数据仍然无法还原,可以在一定程度上保护文件。
要对Word文件加密,可以在文件保存时进行,下面以Word 2010为例进行说明。
将一个文件创建或修改完毕后,单击Word程序左上角的图标,在弹出的菜单中选择“另存为”菜单项,在随后弹出的名为“保存文档副本”的“另存为”二级菜单中,选择“Word文档”选项,此时系统会弹出“另存为”对话框,如图2.3所示。
图2.3 Word 2010的“另存为”对话框
单击该对话框左下角的“工具”按钮,会弹出一个菜单,选择其中的“常规选项”菜单项,系统会弹出另一个名称为“常规选项”的对话框,如图2.4所示。
图2.4 通过Word 2010的“常规选项”对话框设置Word密码
Word 2010设置了两个层次的密码,一个是打开文件时的密码,另一个是修改文件时的密码,前者意味着打开文件,即使只是读取,不做任何修改也要输入密码;后者则表示如果要对文件进行修改,则必须输入密码。
各自连续输入两次密码后,单击“确定”按钮,系统则自动转到“另存为”界面上。单击“保存”按钮,则保存的文件即带有上述设定的密码。
Office中的其他程序,例如常用的Excel和PowerPoint,无论从操作步骤上还是各操作的意义上和Word几乎一样,所不同的只是各自的界面上项的个数及每个项的意义等细节略有差别。
传统方式下,RAR文件表示的是数据的无损压缩格式文件,支持这种压缩算法的常见程序是WinRAR,并且一旦安装了该软件,则在对文件或目录用鼠标右键单击所弹出的菜单中,会显示一些与RAR压缩相关的菜单项,如图2.5所示。
图2.5 用鼠标右键单击文件或目录后显示的与压缩相关的菜单项
根据分隔线可以看到,系统支持两组压缩格式:一组是基于ZIP的压缩,例如“添加到压缩文件(B)”;另一组是基于RAR的压缩,例如“添加到压缩文件(A)”。如前所述,由于几乎所有的压缩软件都同时支持两种压缩格式,所以可以将二者等同。要在压缩文件中加密码,则可以选择两个“添加到压缩文件”菜单项中的任意一个。这时系统会弹出“压缩文件名和参数”对话框,单击该对话框中的“高级”选项卡,再单击“设置密码”按钮,系统会弹出密码输入框,此时输入密码即可完成设定,如图2.6所示。
图2.6 WinRAR软件的“压缩文件名和参数”对话框的“高级”选项卡界面
自己编写一个加解密算法无疑是一个最具诱惑力的加密方法。自编的加解密程序安全性强,很实用,只要连加解密算法也保密,那么靠仅有的一两个加密后的文件很难解密。
然而,编写这样的加解密算法对没有编程经验的人来说,不是件容易的事。自编加解密算法有两个难点:一是大多数加解密算法需要有一套编程环境,例如,如果采用C/C++语言,则需要有Visual C++程序,如果采用网络B/S架构的程序,则需要配置一个网络Web服务器;二是很多程序都是编译型的,即使提供了全部的源程序,如果不会编译、连接等操作(尽管该操作并不复杂),则仍然无法将源程序编译成可执行文件。
考虑到上述实际情况,下面介绍一种不需要编程环境,并且不需要编译的加密程序设计方法,即通过VBS进行编程的方法。VBS的全称是Microsoft Visual Basic Script Edition,即微软可视化BASIC编程语言的脚本版。正如其名称所透露的信息,VBS是基于Visual Basic的脚本语言,由于Windows直接支持该脚本,所以可以在Windows中当作编程语言直接使用。VBS文件用任何非格式的编辑器都可以编辑,例如Windows自带的“记事本”就可以创建、编辑VBS文件,其扩展名是vbs。单击“开始→所有程序→附件→记事本”菜单,将下面的代码复制到弹出来的“记事本”中。
将上述代码复制粘贴到“记事本”后,选择“记事本”的“文件→另存为”菜单,在弹出的“另存为”对话框中,将“文件名”文本框的内容改为“jiami.vbs”,将“保存类型”下拉列表框设置为“所有文件”类型,然后单击“保存”按钮即可完成保存。
简单介绍一下程序的原理。程序中明确标明了唯一一处可以修改的地方。表达式中的“Xor”是一种在生活中很少用到的被称为“异或”操作的运算。“异或”操作有一个特点,就是:(A Xor X)Xor X=A,通俗地讲,就是一个数连续“异或”另一个数两次,就等于自身,用在加解密上,就是如果一个数“异或”了密码,就变成了加密后的数据,而加密后的数据再“异或”密码一次,又变成了原文。这意味着加密和解密是同一个程序,也就是说,上面的程序对另一个文件进行一次“操作”就变成了加密,再进行一次操作,又变成了解密。
双击前面保存好的“jiami.vbs”文件,会弹出一个通用格式的文件打开对话框。假设有一个文件a.txt,其内容为“你的个人信息安全吗?”,如图2.7所示。
图2.7 加密前的a.txt文件的内容
选中该文件,单击“打开”按钮,则程序会立即对该文件进行加密,并在相同目录下生成“加密a.txt”(即在原文前加上“加密”二字),打开加密后的“加密a.txt”文件,其内容会显示为乱码,如图2.8所示。
图2.8 加密后形成的“加密a.txt”文件
同样的步骤,再次双击“jiami.vbs”文件,如果这次我们选择的是已经加密的“加密a.txt”文件,则原本应该是二次加密后的效果,但是根据前面所述,由于加密算法是“异或”加密,所以二次加密反而等于解密。这时生成的文件名变成了在“加密a.txt”文件前面再加上“加密”二字,即“加密加密a.txt”文件的内容。通过对比发现,“加密加密a.txt”内容与“a.txt”文件一样。
根据上述原理,以后凡是需要加密的,只要奇数次运行该加解密算法即可,如果要解密,则偶数次运行该加解密算法即可。并且修改代码中指定位置中的数字,还可以变换出多套加解密算法。