我有一个用Delphi 7编写的程序,它使用MS Access 2000数据库作为后端。
我的密码保护我的MS ACCESS 2000数据库文件(* .mdb),其中包含16个字符的密码,包含数字,控件,UpperCase和LowerCase字符的错误。
然而,看起来市场上有许多程序声称可以检索密码。如果是这种情况,这个数据库密码的目的是什么?无论如何要做到这样它是不可检索的?加紧加密可以这么说吗?
谢谢
答案 0 :(得分:3)
无论如何都要这样做 不可检索?拧紧 加密可以这么说吗?
取决于;您可以更改数据库并寻找更安全的数据库(例如MS SQL Server Compact Edition),或者如果您希望保持MS Access并且数据的安全性对您很重要,请使用良好的加密来加密重要字段算法(例如AES)。
如果要对字段进行加密,可以在Delphi中透明地进行; Delphi中的每个DB字段都是从TField类派生的,并且有两个名为OnGetText和OnSetText的事件。每次尝试读取字段的数据时都会触发OnGetText,每次尝试写入字段时都会触发OnSetText。每当触发OnSetText时,您都可以加密字段数据,这样,加密数据就会保存在数据库中。另一方面,每当触发OnGetText时,您都可以解密字段数据,这样,用户将始终查看并使用解密的数据。整个过程对用户来说是透明的。
当然,您应该注意,每次读取或写入时加密/解密字段都会有性能上的缺陷,具体取决于要加密的字段数,大小,读取或写入的频率以及加密算法。用过的。你只需加密重要字段就可以了。
另一种选择可能是加密整个MS Access数据库文件,并在应用程序连接到它时解密它,但这样,只要您的应用程序没有运行,该文件就是安全的;一旦您的应用程序运行并且文件被解密;该文件向其他人公开。
答案 1 :(得分:3)
MS Access 2010使用更好的加密并具有其他一些功能。 SQL Server Compact版本为您提供了更多安全性,但仍适用于桌面应用。
否则,请使用服务器数据库:mysql,sql server,oracle。大多数都有免费版本。
答案 2 :(得分:2)
如果是这种情况,这个数据库密码的目的是什么?
让人们认为Access是一个真正的数据库感觉很好。
无论如何要做到这样它是不可检索的?
停止使用Access。
加紧加密可以这么说吗?
不在Access中。但是,如果您停止使用Access并使用真实数据库,您会发现您也可以拥有真正的安全性。
答案 3 :(得分:2)
如果要求安全性,则不应使用Jet数据库或任何其他文件共享数据库体系结构。就这么简单。
答案 4 :(得分:1)
此数据库的用途是什么 密码,如果是这样的话?
目的是让人们升级到MS SQL Server并为此购买许可证。有些东西MS永远无法解决。
另一方面,他们有一个免费版本的MS SQL Server,它没有那么残缺,所以除非你的系统实际上需要一个完整的MS SQL Server,否则你不必开始付钱。
但是,如果您开发类似这样的系统(没有计划并且不了解您选择的技术的限制),您最有可能将自己锁定为专有功能,无论好坏。
编辑: 这是直接来自MS
的引用注意虽然型号和 本文讨论的技术 增强安全性,最安全的方式 帮助保护您的Access数据 将表存储在服务器上,例如 运行Windows SharePoint的计算机 Services 3.0或Microsoft Office SharePoint Server 2010。
答案 5 :(得分:0)
使用crypt aes而不是标准机制。
答案 6 :(得分:-1)
我也在专家交流中发布了这个问题。这是我正在寻找的那种答案(不是批评)。虽然这个人最终告诉我要切换数据库,但他清楚地解释了为什么,没有批评:
DatabaseMX:
正如您所发现的,在A2007之前,Access数据库密码基本上没有安全性。 1000个工具(一些免费的)可以立即破解Access密码。 A2007 / 10正在使用改进的密码范例......它的安全级别尚不清楚。
“无论如何都要这样做它不可检索” 不会。它只是略胜一筹,具体取决于您使用mdb的特定环境。
“如果是这种情况,这个数据库密码的目的是什么?” 这只是一个糟糕的实施。周期。
使用A2003和之前的版本,您可以做的最好的是以下各项的组合: 1)db密码 2)添加用户级安全性 3)创建MDE以保护代码。但事件MDE可能被黑客入侵。
所以,如果......你真的需要更好的安全性,你需要查看SQL Server或同等平台。
MX