加密后台数据库的方法

2016-02-19 13:29 6 1 收藏

下面图老师小编要跟大家分享加密后台数据库的方法,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - 编程语言 】

地球人都知道,MDB文件很不安全,破解MDB文件密码的软件层出不穷,那是否如果我们MDB作后台数据库,是不是就等于任人宰割了呢?我觉得未必是这样的。

我用过不少Access密码破解器,大多数都只能处理英文密码,因此我们可以针对这一特点,把MDB文件的数据库密码设置为中文的,这样就可以抵挡大部份破解器的攻击了。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

一定有人会说,既然人家能写出破解英文密码的软件,一定也可以写出破解中文密码的软件。这句话一点都没错,不过我们还有第二招:更改文件头。

MDB的头16个字节保存着文件类型、版本等诸如此类的重要信息,Access靠这些信息来识别它们,如果我们改动一个或多个字节,Access就会因无法识别这些文件而打不开它们,也就达到了我们的目的:加密MDB文件。加密思路如下:

打开文件时,把正确的头文件内容写入相应的位置,我们自已的程序就可以访问它,关闭文件时把更改过的错误的头文件内容写入相应的位置。这样做有个弊端,就是程序运行时,后台文件是可以访问的,只有关闭后才加密,那么当程序运行时,别人如果知道了数据库密码,还是可以查看或导出数据的。

另一种做法是打开后台数据库后,马上建立一个持续到程序结束的物理连接,然后再把错误的文件头内容写入相应的位置,这样在程序运行当中,我们的前台程序是可以正常访问后台数据的,而不知道我们的加密方法的人是无法打开后台文件的。

'使后台可以正常访问
Function OpenHt(HTmdbPath As String)
Dim fh As Integer
fh = FreeFile
Open HTmdbPath For Binary Access Write As #fh
Put fh, 2, &H1
Close #fh
End Function

'使后台无法正常访问
Function CloseHt(HTmdbPath As String)
Dim fh As Integer
fh = FreeFile
Open HTmdbPath For Binary Access Write As #fh
Put fh, 2, &H0
Close #fh
End Function

'下面的都是跟后台建立物理连接的函数(必须放在模块里)
Public HTcn As Connection
Public HTrs As New ADODB.Recordset
Public HTsql As String

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

'建立物理连接
Function OpenStandHT()
Set HTcn = CurrentProject.Connection
'表1要改成相应的表名
HTsql = "select * from 表1"
HTrs.Open HTsql, HTcn, 3, 3, 1
End Function

'关闭物理连接的函数,如退出程序时,或需要压缩后台文件时就要关闭物理连接
Function CloseStandHT()
HTrs.Close
Set HTcn = Nothing
End Function

来源:http://www.tulaoshi.com/n/20160219/1604445.html

延伸阅读
SQL Server 2008 备份数据库: 1.打开SQL , 找到要备份的数据库 , 右键 任务 备份 2.弹出 [ 备份数据库对话框 ] ,如图: 3.点击添加 [ 按钮 ] . 如下图: 4.选择要备份的路径 和 备份的文件名 点击 [ 确定 ]. 5.然后就一直点击确定就可以了 . 然后我们来到D:\ 看看 6.这个时候 , 你可以把它压缩打包什么的 , 要用的时候 , 在...
标签: Web开发
请求页面request.jsp 代码如下: %@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"% !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" html head meta http-equiv="Content-Type" content="text/html; charset=UTF-8" titleInse...
一 清空数据库里所有的表   代码如下: DECLARE @tablename varchar(50) DECLARE @truncatesql varchar(255) DECLARE TrCun_Cursor CURSOR FOR select [name] from sysobjects where type = 'U' --有条件的清空表 name'不想清空的表名'-- OPEN TrCun_Cursor FETCH TrCun_Cursor INTO @tablename WHILE(@@fetch_status = 0) BEGI...
对于一个普通的Access数据库文件,由于可以使用一些工具绕过它的密码,直接读取里面的数据表,所以必须有一种方法将这种数据库文件进行加密编码,以非法的访问情况,这样这个数据库才能算是安全的。 如果要对某个某个数据库文件进行加密,只要单击“工具”菜单下“安全”选项下面的子菜单上的“加密/解密数据库”命令,就会弹出一个“...
在目前的工作中需要解决复制整个SqlServer数据库的问题,复制的内容包括数据库大纲、数据库中的存储过程、函数、表结构、主外键关系以及表中的所有数据等,也就是说copy版本与原数据库一模一样。经过一段时间的摸索,找到的一个比较简单的解决方案是: (1)在复制数据库之前,先备份该数据库到文件。 (2)依据备份文件创建新的数据库,并Res...

经验教程

398

收藏

73
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部