Microsoft Access 2007推出了一个用于存储Access数据库信息的新的文件格式。这个文件格式可以由任何以.ACCDB结尾的文件识别。虽然Microsoft Access2007仍然支持.MDB的文件类型,但是未来的Access将围绕.ACCDB格式来建立。
.ACCDB格式最显著的一个改变是一个新的加密方法,它是基于数据库密码的。这个改变是一个非常显著的安全改进,因为加密的ACCDB数据库是(理论上)足够强大,它们只可以使用非常强大的密码恢复才能破解。当然,如同所有的安全一样,如果许多人以同样方式来进行,那么这个风险要高得多,因为有人将得出怎样破坏这个安全。这无疑将适用于加密一个Access 2007数据库,因为使用的默认加密算法是40位密钥的RC4,它没有达到它所能达到的那么强大。在这篇文章里,将向你展示怎样使得你的密码加密数据库比标准的ACCDB加密更加安全。
这个加密是什么以及为什么它很重要
Access 2007以块——也就是页面的形式读取和写入到.ACCDB文件。这些页面的大小是固定的:4096字节。加密是发生在页面级别的,为了使事情变得简单(以及考虑性能原因),加密的页面必须也是4096字节。在ACCDB中,每个加密 的“页面”有一个唯一键,它是从一个密码哈希(它包含随机基础数据)获得的。这是非常重要的,因为现在数据库密码不再存储在这个文件中(不像之前的版本)。这个方法意味着只有强力密码恢复才有可能。
另外,默认加密只使用40位密钥,这确实使得它差一些,但是幸运的是这可以提高到128位加密。在本文中会介绍如何做到这一点。
在你开始加密之前
你可能会在读一篇关于数据库的文章时,会急于在你所使用的数据库上进行尝试。在这个例子中,请不要这么做;使用这篇文章所带的数据库,并在一个不含有任何其它数据库的文件夹下进行试验。当你准备好要对你自己的数据库添加一个密码时,请确保你有一个系统用于记住密码,例如打印和存储在一个安全的保险箱中。
使用标准40位密钥加密一个Access 2007数据库
要加密一个数据库,开始时和你进行Access 2003加密的过程是很类似的。首先你需要打开Microsoft Access,不选数据库,然后使用Open More Files选项(见图1的RHS)浏览数据库。在你选择了数据库之后,点击Open按钮旁边的向下箭头(见图1的底部)并选择Open Exclusive。
图 1 – 以独占方式打开你的数据库
选择Database Tools标签页并选择Encrypt with Password,如图2所示。
图 2–在2007工具条上的密码加密
输入一个强密码(字母和数字以及特殊字符)并确认。请将这步的密码记录在其它什么地方。
改变数据库密码总是一个好方法。要这么做,以独占方式打开数据库。现在你将看到Decrypt Database按钮在Access 工具条中Database Tools标签页上取代了Encrypt With Password按钮。使用这个按钮来删除密码。
使用一个128位密钥加密一个Access 2007 数据库
正如前面所提到的,Access 现在支持不同的RC4加密算法提供者(也叫做加密提供者)。现在让我们看看你怎样使用一个较长的密钥长度来加密你的ACCDB数据库、提供更强的加密。在你这么做之前,你最好有一个最近的完全系统备份,因为你现在将被显示怎样改变Windows注册表。
要对一个ACCDB数据库进行一个更强的加密,你需要对你的注册表进行修改。要这么做,点击Windows 开始按钮并选择Run,在程序对话框中输入RegEdit。
在注册表的层级中找到下面的键
HKEY_CURRENT_USER/Software/Microsoft/office/12.0/Common
注意:注册表中的键12.0意味着Office 2007
创建一个新的键,叫做Security (如图3所示),如果它不存在的话。
图 3 ~ 在注册表中创建一个键
创建叫做DefaultEncryption的多字符串值(如果它不存在的话),如图4所示:
图 4 ~ 在注册表中创建一个多值键
重命名这个值New Value #1为DefaultEncryption,如图5所示
图 5 ~ 重命名字段值
黏贴下面的内容(在一个方框中的单独三行),如图4所示:
Microsoft Enhanced Cryptographic Provider v1.0
RC4
128
图 6 ~ 添加加密设置值
注意:多值字符串的格式是:
值1. 加密提供者名称
值2. 加密算法
值3. 加密密钥长度
这完成了你的注册表建立,下一次你加密一个2007数据库时,将会使用你在注册表中指定的(更强)加密算法。
注意:如果你担心这太复杂;记住只有实施了密码的人才需要修改注册表的键。对于其它人,Access 会从数据库里的信息整理出要使用的加密方法。
检查使用了什么加密密钥
如果你在Windows Explorer中浏览数据库,右键单击文件名称并选择以记事本或你自己选择一个十六进制编辑器来打开,如图7所示。
图 7 ~ 怎样在记事本中查看数据库(在Windows XP浏览器中)
当你在你的编辑器中打开了这个数据库,如图8所示,那么你会在这个文件的上部发现写有这个加密算法。如果没有加密,那么这个地方将是空白的。
图 8 ~所使用的加密在编辑器中是可见的
警告:当使用这类的编辑器时,无论你做什么,请不要改变和保存这个数据库文件,否则你可能会损坏它。
最后,你可能还想试试其它的RC4加密提供者。找出你机器上有什么其它的RC4加密的一个方法是以加密形式保存一个word文件,如图8所示。
图 9 ~ Microsoft Word会显示出你机器上的加密算法
清除
如果你不喜欢128位加密数据库的概念,而想反过来使用标准的40位加密,那么重新命名或删除你遵循这篇文章所添加到注册表中的任何注册表项。在此之后,删除这个密码并重新添加密码。
性能
本篇文章忽略的一个主题是性能。如果你想加密一个已经运行得很慢的数据库,那么请在执行加密之前和执行加密之后测试性能。你可能会注意到不同的加密算法有不同的性能。
压缩的文件没有被压缩
如果一个数据库被加密了,那么使用一个工具比如WinZip 来压缩将根本不会压缩这个文件。
下载示例
示例下载包括一个没有被加密的数据库、一个已经使用40位密钥长度的RC4加密的数据库和一个使用128位密钥长度的RC4加密的数据库。你需要Access 2007使得这些数据库可用,这些示例的密码是VB123.com。
建议你在所有目标计算机上打开这个128位加密文件,以确保加密算法存在于这些计算机上。如果不存在,那么这些计算机将不允许打开这个数据库。
ASP编码教程:如何实现/使用缓存
[ASP]2015年4月15日ASP编码教程:asp缓存的分类
[ASP]2015年4月15日ASP编码教程:何谓ASP缓存/为什么要缓存
[ASP]2015年4月15日ASP编码教程:asp实现的sha1加密解密代码
[ASP]2015年4月15日ASP编码教程:asp执行带参数的sql语句实例
[ASP]2015年4月14日