在VB下Access数据库密码的安全设置

合集下载

在VB下Access数据库密码的安全设置

在VB下Access数据库密码的安全设置

在VB下Access数据库密码的安全设置摘要:本文从vb程序设计的角度探讨了access数据库密码的保存方式及密码本身加码、解码的安全问题,以确保数据的完整性和安全性。

关键词:vb access 密码0 引言access 数据库作为微软推出的以标准jet为引擎的桌面型数据库系统,它界面友好、操作简单,是开发中小型数据库应用系统的常用平台,以其功能全面、程序设计方便等特点得到了广泛应用。

但是随着access数据库的广泛应用,对其安全性的需求也越来越高,而数据库的安全主要体现在数据的安全传送与安全存储,而数据的传送与存储大多数都是通过对数据本身的加密来实现的;所以,加密和解密问题也就成为access数据库安全的首要问题。

1 access密码的安全隐患1.1 access 数据库的存储隐患access 数据库的安全隐患第一就是密码的保存问题,将密码放在程序中和文件中,如果获得或者猜到access据库的存储路径和数据库名,则该数据库就可以被下载到本地[1]。

例如:对于校园网上的一个图书查询的access数据库,人们一般命名为book.mdb、library 而存储的路径一般为“url/database”或干脆放在根目录(“url/”)下。

这样,只要在浏览器地址栏中敲入地址:“url/database/library.mdb”,就可以轻易地把slibrary.mdb下载到本地的机器中。

1.2 access 数据库的解密隐患access数据库的加密机制非常简单,所以即使数据库设置了密码,解密也很容易. 该数据库系统通过将用户输入的密码与某一固定密钥进行“异或”来形成一个加密串,并将其存储在*.mdb 文件中从地址“&h42”开始的区域内. 由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件中的加密串进行第二次异或操作,就可以轻松地得到access数据库的密码.基于这种原理,可以很容易地编制出解密程序[2]。

VB如何连接ACCESS数据库详解

VB如何连接ACCESS数据库详解

VB如何连接ACCESS数据库详解首先有一点要注意,数据库的使用与我们以往所使用的文本文件不同.例如我们使用文本文件,来记录各种有用的数据.那么大致有以下几步:读取文件--格式化数据--关闭文件--使用数据如果数据量很大,须要展开甄选,且存放数据的源文件可能将不定时更改,那么我们可以用一个临时文件去放置有价值的数据,这样可以大大提高程序的效率.必须[格式化数据]时,我们首先必须展开甄选,然后还得展开分类,这样文件中的字符串就可以被转换成有价值的信息以供程序采用.这样一来,不用说,处理速度将大大减缓,而且即使你设计的数据格式比较科学,当数据量非常小时,文件的容量也可以变小的使普通计算机无法忍受.相对文本文件来说数据库的使用也大致分为以下几步:打开数据库--查找数据--使用数据--关闭数据库从中可以窥见,里面太少了一步格式化数据,因为数据库本身在存储数据时,它就是按照一定的格式去展开存储的.其次是,数据库与文本文件返回数据的方法不同.如果把文本文件比作一个textbox的话,那么数据库更像是一个listbox.使用文本文件时我们需要从整个textbox中取出有用的信息,并进行处理,而listbox则可以根据需要返回特定的某一项.由于vb本身并不具有可以出访数据库的类,所以我们须要提及一个涵盖能够出访数据库的Derrien采用数据库.这里我们使用adodb,较之dao和能够出访数据库的api来说,它比dao更有效率,更强悍;而较之api,它更直观功能强大,更适宜初学者.而access数据库较之sql,也相对直观了很多,且能满足用户中小型应用程序的须要,所以我们在采用数据库时,挑选了access.就像使用文本文件来存储数据一样,我们需要先设计好数据结构,只不过在设计access 数据库的结构时,我们需要用到其它的程序来进行详细的规划.建议采用的程序是office 中的access或vb自带的visdata.当数据库设计不好了以后,我们可以已经开始\数据库编程\了.首先,我们需要引用ado.具体的方法是,在\工程\--\引用\中,找到\activexdataobject*.*library\这里的\是指的时ado的版本号,一般来说,应用程序或activex控件都具有向下兼容性,所以我们尽可能选择比较新的版本.以确保程序在能识别旧版本access的同时,也能识别较新版本的access.然后我们须要在程序中建立一个对象.就如同我们在窗体上嵌入一个filebox就可以看见文件名一样,只有建立了ado对象,我们才能出访数据库.常用的对象存有两个,connection和recordset.创建这两个对象的具体方法是:1.在引用后,使用new关键字,如privateconnasnewadodb.connectionprivaterecoasnewadodb.recordset2.在没有提及时,用createobject创建对象:dimconn,recosetconn=createobject(\setreco=createobject(\建立了对象之后,下一步我们必须搞的就是关上数据库了.先看看下面的代码,可以顺利的关上数据库.conn.open\这句代码打开了d盘中的main.mdb这个数据库.connection.open方法的第一个参数就是相连接代码,它将传达给系统的数据库引擎.前半部分后\microsoft.jet.oledb.4.0\它则表示了数据库的类型.相同的数据库可能会相同.后半句\它则表示了数据库所在的绝对路径.打开数据库之后,还要打开表.假如数据库中有一个表,表名为\字段有两个,一个为用户名,一个为密码.那么看以下代码.1.想要回到\中,[用户名]为\去年烟花\的[密码]recordset.open\密码fromuserswhere用户名='去年烟花'\之后我们就可以把用户输出的密码展开比较,看看与否容许登入.ifrecordset.eofandrecordset.bofthenmsgbox\用户不存有!\elseifpassword=recordset(\密码\msgbox\登录成功!\elsemsgbox\密码错误!\endifendifrecordset.close2.假设admin已经顺利登入系统,我们想要把所有的用户名和密码都表明出recordset.open\这时,表中已经被关上,我们就用以下代码把它表明出.dowhlienotrecordset.eofprint\用户名:\用户名\密码:\密码\recordset.movenextlooprecordset.close由以上代码示例可以看出,打开表时,可以只打开其中的一个字段,也可以打开所有.第一个参数是sql语句.select[字段名]from表名[where条件]这里的条件可以省略.且字段名也可以用\来代替所有字段.须要特别注意的就是,如果你用(1)中的方法关上,那么(2)后面表明的代码就无法皮德盖在(1)中.因为(1)里并没关上[用户名]字段,所以这一句recordset(\密码\就没值存有,除了可能将失效.后面的条件,可以用\、\、\等运算符.比如说\这里假设[id]为数字型.)这是打开的部分.第二个很重要的部分就是查询记录.数据库它并不是把所有记录全部放在一个变量中水泵的.而是以\当前记录\的形式去回到一个值.所以我们想要从中找出有价值的信息,就必须必须对信息展开定位/甄选.定位:移动到下一条recordset.movenext移动到上一条recordset.moveprevious移动到最后一条recordset.movelast移动至第一条recordset.movefrist移动至某一条recordset.movenumber甄选:recordset.find\条件\recordset.find\用户名=\ifrecordset.eof<>truethenmsgbox\该用户的密码是:\密码\elsemsgbox\未找到该用户的资料!\endifendsubmovenext只有当eof不为true时,才可用,否则发生错误.而moveprevious刚是bof不为true时....而只要eof和bof中存有一个不为真时,也就是说只要存有一条记录时,它就可以采用.find方法中的条件和open时的第一个参数中的条件表述方法是完全一致的.当在已打开的记录集中,找不到该记录时,eof为true.找到则当前的值就是符合条件的记录.第三个部分就是嵌入/修正记录.修改记录很简单,先按以上的方法找到相关记录之后,给记录赋值就可以了.比如:[(修改密码)按方法(1)打开表之后]recordset(\密码\recordset.updata须要特别注意的就是,在修正顺利完成后,必须调用updata方法,这样修正就可以生效.而嵌入记录则可以用以下代码去同时实现:recordset.addnewrecordset(\用户名\recordset(\密码\recordset.updata这里,先必须调用addnew方法,减少一条崭新记录,然后对这个崭新记录中的各字段赋值,最后再调用updata方法.到这里就差不多了,最后说一下上面提到的几个方法.recordset.opensql语句,数据源,游标类型,打开方法sql语句不用说了,就是select那啥的,目的就是按建议从表回到数据数据源就是一个关上之后的connection对象.回去他妈的游标类型,填上1就可以了[里头ing]打开方法对应了几个常数,具体哪几个可以从对象浏览器里看.对应数值的意义:1所读2独霸3展毛4自已可以写下,别人复本connection.open相连接代码,服务器用户名,密码这里的连接代码就不在多说了,服务器用户名,密码只有在连接远程数据库时才用到.在搞项目时,经常碰到必须将excel中的大量数据复制到access数据库中,原来的作法就是念一条写下一条,若引入上万条的数据须要几分仲时间,速度很慢。

VBA中的数据加密与解密技巧

VBA中的数据加密与解密技巧

VBA中的数据加密与解密技巧在VBA编程中,数据的安全性是至关重要的。

为了保护敏感信息,我们经常需要对数据进行加密和解密。

本文将介绍VBA中常用的数据加密和解密技巧,帮助您保护您的数据。

1. 使用密码加密数据使用密码对数据进行加密是最常见的方法之一。

在VBA中,我们可以使用常见的加密算法,如AES、DES或者RSA等,通过将密码应用于数据来加密它们。

下面是一个使用AES加密算法的示例:Sub EncryptData()Dim Data As StringDim Password As StringDim EncryptedData As StringData = "需要加密的数据"Password = "密码"EncryptedData = AesEncrypt(Data, Password)' 将加密后的数据保存到文件中或者进行其他处理' ...End SubFunction AesEncrypt(Data As String, Password As String) As String' 实现AES加密算法的代码End Function在这个示例中,我们使用了一个名为AesEncrypt的函数来实现AES 加密算法。

您可以根据需要选择不同的加密算法,并根据相应的算法修改代码中的实现部分。

2. 使用哈希函数哈希函数在数据加密中也起着重要的作用。

它们将数据转换为固定长度的哈希值,这个哈希值可以用来验证数据的完整性。

VBA中有许多常见的哈希函数可供选择,如MD5、SHA-1或SHA-256等。

下面是一个使用SHA-256哈希函数的示例:Sub HashData()Dim Data As StringDim HashValue As StringData = "需要哈希的数据"HashValue = Sha256Hash(Data)' 将哈希值保存到文件中或者进行其他处理' ...End SubFunction Sha256Hash(Data As String) As String' 实现SHA-256哈希函数的代码End Function在这个示例中,我们使用了一个名为Sha256Hash的函数来实现SHA-256哈希函数。

vb操作access数据库的方法

vb操作access数据库的方法

VB操作Access数据库方法使用ADODB首先,声明一个链接变量,并根据需要声明记录集变量。

建立与数据库的链接,如果数据库没有口令,最后一行可以不写(写上也不会错)。

这种方法虽然代码长一些,但对数据环境要求低,且结构清晰,所编写的发布程序也大为减小。

由于与链接SQL Server等数据库的方法一样,因而大量的操作数据库的代码相同,当数据库需要由Access扩充到一些大型数据库,或由一些大型数据库裁剪出一个简单数据库时,程序的移植会比较方便。

另外,这种方法对于Access97及Access2000均能很好地支持,兼容性好。

对于大量插入、删除、修改等操作,只在Connection层进行即可,既可提高速度又可减少代码。

如果还要获取具体的记录集内容,则须再根据条件打开具体的库表,代码如下:ADO常用方法下面是我所掌握的使用ADO对数据库操作的一些常用方法,主要是提供给初学者作为参考,有不对的地方请指正。

如有补充不胜荣幸准备工作========Dim conn As New ADODB.Connection '创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行Dim rs As ADODB.Recordset '创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用Dim CnStr As String, Sql As String '创建两个字符串变量分别存放两个集合的SQL语句代码段1、装载数据库(不属于Recordset集合)=============Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$'以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码FileName = App.Path & "\'数据库名'"DbIp = "数据库地址"DbName = "数据库名"DbUser = "数据操作员用户名"DbPw = "操作员密码"'以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量'1)连接Access数据库:'-------------------CnStr = "PROVIDER=microsoft.jet.oledb.3.51;persist security info =fal se;data source=" & FileName & ";Jet OLEDB:Database Password=" & DbPw'2)连接Oracle数据库:'-------------------CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data Source=" & FileName & ";Persist Security Info=True"'其中:'PASSWORD: 密码'User ID: 用户号'Data Source: 数据库名'Persist Security Info:'Provider:'3)连接VF的DBF库:'----------------CnStr = "PROVIDER=MSDASQL.1;Persist Security Info=False;Driver={Microsoft Visual FoxPro Driver};UID=" & DbUser & ";SourceDB=" & FileName & ";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"'4)连接SQL的数据库'------------------CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName & ";WSID=GQS OFT;SERVER=" &DbIP'也可以使用这段简易代码 CnStr = "Provider=SQLOLEDB;Data Source=" & Db Ip & ";DATABASE=" & DbName & ";UID=" & DbUser & ";pwd=" & DbPwConn.Open cnstr '使用 Connection 集合的 Open 方法与数据库建立连接2、Recordset集合的常用方法=========================='1)打开一个表'------------Sql = "select * from 表名" 'SQL查询语句Set rs = New ADODB.Recordset '新建一个实例rs.Open Sql, conn '使用 Open 方法打开数据库中的一个表'注意,这种打开方式只能使用 rs.MoveNext (即,向后移动行坐标)而不能像其他方向,并且不能修改数据内容''rs.Open Sql, conn,1 '虽然只加了个“1”,但这种方法可以向任何方向移动行坐标。

vb ADO控件连接ACCESS数据库做登录密码的例子

vb ADO控件连接ACCESS数据库做登录密码的例子

'准备好ACCESS数据库,建一个Uesr_id表,表中建两个字段就可以了。

'在[工程]菜单下选择[部件];在弹出的窗口内勾选[Microsoft ADO Data Control 6.0]然后确定。

'在工具栏中双击Adodc控件,Adodc控件添加到form内,在form内右单击Adodc1选择属性ADODC属性,'在弹出的窗口中单击[生成],在弹出的窗口中选择Microsoft Jet 4.0 OLE DB Provider,'单击下一步,在弹出的窗口中单击[...]选择Access数据库所在的路径,单击[确定],然后在属性页'上单击[记录源],命令类型选择[2-adCmdTable];表或存储过程名称选择[User_id],单击[确定],'设置Adodc1的Visible属性为False,ADO控件已经设置好了。

'向form内添加两个TextBox分别为text1和text2分别把它们的text属性值设置为空,把text2的'PasswordChar值设置为*,再向form内添加一个按钮CommandButton,默认为Command1;'现在所有控件都准备好了,下面编程解决登录问题。

Private Sub Command1_Click()Dim U As Boolean, P As Boolean, Ok As BooleanWith Adodc1.RefreshDo While Not .Recordset.EOFU = .Recordset.Fields(0).Value = Text1.Text '字段0为用户名称P = .Recordset.Fields(1).Value = Text2.Text '字段1为用户密码If U And P ThenOk = TrueExit DoElse.Recordset.MoveNextEnd IfLoopEnd WithIf Ok ThenMsgBox "登录成功"ElseMsgBox "登录失败"End IfVB利用ADO控件连接access数据库今天告诉大家VB利用ADO控件连接access数据库的两种方法:一种是在adodc1的属性里设置数据库文件的路径,这种方法的优点是简单易操作,缺点是,当源文件换了地方后,要重新设置数据库的路径,否则连接不上数据库了。

vb操作access数据库的方法

vb操作access数据库的方法

VB操作Access数据库方法使用ADODB首先,声明一个链接变量,并根据需要声明记录集变量。

建立与数据库的链接,如果数据库没有口令,最后一行可以不写(写上也不会错)。

这种方法虽然代码长一些,但对数据环境要求低,且结构清晰,所编写的发布程序也大为减小。

由于与链接SQL Server等数据库的方法一样,因而大量的操作数据库的代码相同,当数据库需要由Access扩充到一些大型数据库,或由一些大型数据库裁剪出一个简单数据库时,程序的移植会比较方便。

另外,这种方法对于Access97及Access2000均能很好地支持,兼容性好。

对于大量插入、删除、修改等操作,只在Connection层进行即可,既可提高速度又可减少代码。

如果还要获取具体的记录集内容,则须再根据条件打开具体的库表,代码如下:ADO常用方法下面是我所掌握的使用ADO对数据库操作的一些常用方法,主要是提供给初学者作为参考,有不对的地方请指正。

如有补充不胜荣幸准备工作========Dim conn As New ADODB.Connection '创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行Dim rs As ADODB.Recordset '创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用Dim CnStr As String, Sql As String '创建两个字符串变量分别存放两个集合的SQL语句代码段1、装载数据库(不属于Recordset集合)=============Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$'以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码FileName = App.Path & "\'数据库名'"DbIp = "数据库地址"DbName = "数据库名"DbUser = "数据操作员用户名"DbPw = "操作员密码"'以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量'1)连接Access数据库:'-------------------CnStr = "PROVIDER=microsoft.jet.oledb.3.51;persist security info =fal se;data source=" & FileName & ";Jet OLEDB:Database Password=" & DbPw'2)连接Oracle数据库:'-------------------CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data Source=" & FileName & ";Persist Security Info=True"'其中:'PASSWORD: 密码'User ID: 用户号'Data Source: 数据库名'Persist Security Info:'Provider:'3)连接VF的DBF库:'----------------CnStr = "PROVIDER=MSDASQL.1;Persist Security Info=False;Driver={Microsoft Visual FoxPro Driver};UID=" & DbUser & ";SourceDB=" & FileName & ";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"'4)连接SQL的数据库'------------------CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName & ";WSID=GQS OFT;SERVER=" &DbIP'也可以使用这段简易代码 CnStr = "Provider=SQLOLEDB;Data Source=" & Db Ip & ";DATABASE=" & DbName & ";UID=" & DbUser & ";pwd=" & DbPwConn.Open cnstr '使用 Connection 集合的 Open 方法与数据库建立连接2、Recordset集合的常用方法=========================='1)打开一个表'------------Sql = "select * from 表名" 'SQL查询语句Set rs = New ADODB.Recordset '新建一个实例rs.Open Sql, conn '使用 Open 方法打开数据库中的一个表'注意,这种打开方式只能使用 rs.MoveNext (即,向后移动行坐标)而不能像其他方向,并且不能修改数据内容''rs.Open Sql, conn,1 '虽然只加了个“1”,但这种方法可以向任何方向移动行坐标。

VB连接Access数据库的两种方法

VB连接Access数据库的两种方法

VB连接Access数据库的两种方法首先有一点要注意,数据库的使用与我们以往所使用的文本文件不同.例如我们使用文本文件,来记录各种有用的数据.那么大致有以下几步: 读取文件-- 格式化数据-- 关闭文件-- 使用数据如果数据量较大,需要进行筛选,且存放数据的源文件可能不定时变更,那么我们可以用一个临时文件来存放有用的数据,这样可大大提高程序的效率.要[格式化数据]时,我们首先要进行筛选,然后还得进行分类,这样文件中的字符串才能被转换成有用的信息来供程序使用.这样一来,不用说,处理速度将大大减慢,而且就算你设计的数据格式比较科学,当数据量非常大时,文件的容量也会变的让普通计算机无法承受.相对文本文件来说数据库的使用也大致分为以下几步:打开数据库-- 查找数据-- 使用数据-- 关闭数据库从中可以看出,里面少了一步格式化数据,因为数据库本身在存储数据时,它就是按照一定的格式来进行存储的.其次是,数据库与文本文件返回数据的方法不同.如果把文本文件比作一个Textbox 的话,那么数据库更像是一个ListBox.使用文本文件时我们需要从整个Textbox中取出有用的信息,并进行处理,而Listbox则可以根据需要返回特定的某一项.由于VB本身并不带有可以访问数据库的类,所以我们需要引用一个包含能访问数据库的类来使用数据库.这里我们采用ADODB,相比DAO和能访问数据库的API来说,它比DAO更灵活,更强大;而比起API,它更简单易用,更适合初学者.而Access数据库比起SQL,也相对简单了很多,且能够满足中小型应用程序的需要,所以我们在使用数据库时,选择了Access.就像使用文本文件来存储数据一样,我们需要先设计好数据结构,只不过在设计Access数据库的结构时,我们需要用到其它的程序来进行详细的规划.建议采用的程序是office中的Access或V B自带的VISDATA.当数据库设计好了以后,我们可以开始"数据库编程"了.首先,我们需要引用ADO.具体的方法是,在"工程" -- "引用" 中,找到"Microsoft ActiveX Da ta Object *.* Library",这里的"*.*"是指的时ADO的版本号,一般来说,应用程序或ActiveX 控件都具有向下兼容性,所以我们尽可能选择比较新的版本.以确保程序在能识别旧版本Access 的同时,也能识别较新版本的Access.然后我们需要在程序中创建一个对象.就好比我们在窗体上添加一个FileBox才能看到文件名一样,只有创建了ADO对象,我们才能够访问数据库.常用的对象有两个,Connection和Records et.创建这两个对象的具体方法是:1.在引用后,使用New关键字,如Private Conn As New ADODB.ConnectionPrivate Reco As New ADODB.Recordset2.在没引用时,用CreateObject创建对象:Dim Conn,RecoSet Conn =CreateObject("ADODB.Connection")Set Reco =CreateObject("ADODB.Recordset")创建了对象之后,下一步我们要做的就是打开数据库了.先看下面的代码,可以成功的打开数据库.Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Main.mdb"这句代码打开了D盘中的Main.mdb这个数据库.Connection.Open方法的第一个参数是连接代码,它将传递给系统的数据库引擎.前半部分"Provider=Microsoft.Jet.OLEDB.4.0",它表示了数据库的类型.不同的数据库可能会不同.后半句"Source=d:\main.mdb"它表示了数据库所在的绝对路径.打开数据库之后,还要打开表.假如数据库中有一个表,表名为"Users",字段有两个,一个为用户名,一个为密码.那么看以下代码.1.想返回"Users"中,[用户名]为"去年烟花"的[密码]Recordset.open "Select 密码From Users Where 用户名='去年烟花'",Connection,1, 1之后我们就可以把用户输入的密码进行比较,看是否允许登录.If Recordset.eof and Recordset.bof thenMsgbox "用户不存在!",16ElseIf PassWord =Recordset("密码").value thenmsgbox "登录成功!",64Elsemsgbox "密码错误!",32End IfEnd IfRecordset.Close2.假设Admin已经成功登录系统,我们想把所有的用户名和密码都显示出来Recordset.open "Select * From Users",Connection,1,1这时,表已经被打开,我们就用以下代码把它显示出来.Do whlie Not Recordset.eofPrint "用户名: " & Recordset("用户名").value & "密码: " & Recordset("密码").valueRecordset.MoveNextLoopRecordset.Close由以上代码示例可以看出,打开表时,可以只打开其中的一个字段,也可以打开所有.第一个参数是SQL语句.Select [字段名] From表名[Where 条件]这里的条件可以省略.且字段名也可以用"*"来代替所有字段.需要注意的是,如果你用(1)中的方法打开,那么(2)后面显示的代码就不能再用在(1)中.因为(1)里并没有打开[用户名]字段,所以这一句Recordset("密码")就没有值存在,还有可能出错.后面的条件,可以用"="、">"、"<"等运算符.比如"Where ID >32".(这里假设[ID]为数字型.)这是打开的部分.第二个很重要的部分就是查询记录.数据库它并不是把所有记录全部放到一个变量中备用的.而是以"当前记录"的形式来返回一个值.所以我们想从中找到有用的信息,就必须要对信息进行定位/筛选.定位:移动到下一条Recordset.MoveNext移动到上一条Recordset.MovePrevious移动到最后一条Recordset.MoveLast移动到第一条Recordset.MoveFrist移动到某一条Recordset.Move Number筛选:Recordset.Find "条件"如:[用方法(2)打开表之后]Private Sub Command1_Click()Recordset.Find "用户名=" & "text1.text"If Recordset.Eof <> True ThenMsgbox "该用户的密码是:" & Recordset("密码").value,64ElseMsgbox "未找到该用户的资料!",16End IfEnd SubMoveNext 只有当Eof不为True时,才可用,否则发生错误.而MovePrevious刚是Bof不为T rue时....而只要Eof 和Bof中有一个不为真时,也就是说只要有一条记录时,它就可以使用.Find 方法中的条件和Open时的第一个参数中的条件表述方法是完全一致的.当在已打开的记录集中,找不到该记录时,Eof为True.找到则当前的值就是符合条件的记录.第三个部分就是添加/修改记录.修改记录很简单,先按以上的方法找到相关记录之后,给记录赋值就可以了.比如:[(修改密码)按方法(1)打开表之后]Recordset("密码").value = "123456"Recordset.Updata需要注意的就是,在修改完成后,要调用Updata方法,这样修改才能生效.而添加记录则可以用以下代码来实现:Recordset.addnewRecordset("用户名").value ="Admin"Recordset("密码").value = "Admin"Recordset.Updata这里,先要调用Addnew方法,增加一条新记录,然后对这个新记录中的各字段赋值,最后再调用Updata方法.到这里就差不多了,最后说一下上面提到的几个方法.Recordset.Open SQL语句,数据源,游标类型,打开方法SQL语句不用说了,就是Select那啥的,目的就是按要求从表中返回数据数据源就是一个打开之后的Connection对象.去他妈的游标类型,填1就可以了[偷笑ing]打开方法对应了几个常数,具体哪几个可以从对象浏览器里看.对应数值的意义:1 只读2 独占3 可写4 自已可写,别人可读Connection.open 连接代码,服务器用户名,密码这里的连接代码就不在多说了,服务器用户名,密码只有在连接远程数据库时才用到.VB如何连接access数据库2009年07月25日星期六下午 07:07VB如何连接access数据库?最近在学习VB,正在研究当中!今天告诉大家VB连接数据库的方法,我知道的有两种:一种是在adodc1的属性里设置数据库文件的路径,这种方法的优点是简单易操作,缺点是,当源文件换了地方后,要重新设置数据库的路径,否则连接不上数据库了。

ACCESS安全性设置

ACCESS安全性设置

ACCESS的安全性设置应该说,ACCESS的安全性是很弱的,碰到高手一弄,精心作成的软作就完全毁掉了,当然,我是一只菜鸟,我研究ACCESS快十年了,全是用最蠢最笨的办法去解决这些问题,下面,我把我编写的系统的安全性进行一个说明,破解高手就不要来看了,是菜鸟的就来。

如果用ACCESS系统内置的保密办法进行安全管理,这是我刚学习ACCESS时使用的一种办法,破解办法很多人都会,这里我就不说怎么破解了。

层次安全管理设置,那么多人、表、窗休进行设置,这是一项伟大的工程,而且效果并不乐观,经常出错把管理员搞得焦头烂额。

然而,这一切并不是最重要的,最重要的是,用ACCESS写软件,最主要的就是多用户使用,如果把数据库放在软件中,会出现以下两个问题让人不得安宁。

1、当这个软件大小超过500M时,运时会出现错误或系统损坏,我相信很多人已经遇到这个问题了。

2、一旦软件密码被破解,所有的数据都完了,有些数据说不定是公司很重要的数据呢。

所以,对于不会编程的人来讲,想用ACCESS做一些管理系统,但对安全性又不放心,用别的软件编写系统,编程的水平要求又极高,更做不到,怎么办呢?二、因为我思考良久,又测试良久,终于,我决定用以下方法来配置ACCESS的安全性:用SQL SERVER做为系统数据库并把它安装在公司的服务器上,当然,SQL SERVER 的安全设置就比ACCESS高档得多。

2、在客户端电脑上用ODBC联上SQL SERVER的数据库。

3、在ACCESS中用链接的方式接上ODBC。

这样做的好处在于:A、当别人试图从你的ACCESS中导出数据失,ACCESS中根本就没用数据,所以就无法得到系统数据,当然更无法破坏了。

那么,大家一定会想到,人家不用导出,直接打开系统破坏不就得了?所以,下面的方法就是怎样让他打不开系统的主界面(即设计界面)。

三、思路是当系统使用者打开系统的时候,只能看到操作界面,看不到设计界面,这样目的就基本达到了。

VBA中的加密和数据保护方法

VBA中的加密和数据保护方法

VBA中的加密和数据保护方法在VBA中,加密和数据保护方法是非常重要的,可以帮助确保数据的安全性和隐私性。

本文将介绍一些VBA中常用的加密和数据保护方法。

加密是将数据转换为不可读的形式,以保护数据的机密性。

VBA提供了多种加密算法和方法供开发人员选择和使用。

其中最常见的加密算法是对称加密和非对称加密。

对称加密使用相同的密钥对数据进行加密和解密。

这种加密方式速度快,适用于处理大量数据。

VBA中常用的对称加密算法有DES、AES和RC4。

使用这些算法,可以通过调用相应的VBA函数对数据进行加密和解密。

例如,使用VBA中的AES算法进行对称加密,可以使用以下代码:```vbaSub EncryptData(data As String, key As String)Dim aes As ObjectSet aes = CreateObject("System.Security.Cryptography.AesManaged")aes.Mode = 1 ' CBC modeaes.Padding = 2 ' PKCS7 paddingaes.KeySize = 128 ' 128-bit keyDim cipherText() As BytecipherText = aes.CreateEncryptor(Encoding.UTF8.GetBytes(key),Encoding.UTF8.GetBytes(key)).TransformFinalBlock(Encoding.UTF8.GetBytes(data), 0, Len(data))' Save the encrypted dataDim fileNo As IntegerfileNo = FreeFileOpen "C:\encrypted.txt" For Binary Access Write As #fileNoPut #fileNo, , cipherTextClose #fileNoEnd Sub```上述代码中,我们通过创建"AesManaged"对象来使用AES算法进行加密。

Access数据库的系统安全与保密

Access数据库的系统安全与保密
命令,系统会弹出如图11.21所示的“设置安全机制向导”对话 框之一;
3.在“设置安全机制向导”对话框之一中,系统默认选中 “新建工作组信息文件”,单击“下一步”按钮,进入 “设置安全机制向导”对话框之二,如图11.22所示; 4.单击“浏览”按钮修改工作组信息文件名,如果采用默认文件 名则不必修改,通常情况下与自己的数据库文件放在一起,设置完 成后单击“下一步”按钮,打开如图11.23所示的“设置安全机制向 导”对话框之三; 5.在“设置安全机制向导”对话框之三中,可以指定需要加入安全 机制控制的数据库对象。一般而言,应该将所有数据库对象均置于
安全机制控制之下。这也是对话框中的默认值,可以不加任何改 动,直接单击“下一步”按钮,进入“设置安全机制向导” 对话框之四,如图11.24所示;
图11.21“设置安全机制向导”对话框之一
图11.22 “设置安全机制向导”对话框之二
• 图11.23“设置安全机制向导”对话框之 三
图11.24“设置安全机制向导” 对话框之 四
为各个用户设置权限;
图11.28“设置安全机制向导” 对话框之七
图11.29 “设置安全机制向导” 对话框之八
图11.30“设置安全机制向导” 对话框之九
ห้องสมุดไป่ตู้
图11.31“设置安全机制向导” 对话框之九
图11.32数据库登录对话框
图11.33“用户与组权限”对话 框
Access实训
Access实训
系统安全与保密
在单人单机的作业环境中,用户只有读者自己,所以权限 问题并不会很突出,但在多人使用的环境中,由于Access建 立数据库时默认的权限是所有的用户,都和设计者具有相同的权 限,均可以修改和查询数据库,所以为了保护数据库不会被任意 的修改,同时也为保护设计者的知识产权,就应该为每个用户定义不 同的权限。Access提供的安全防范措施是通过为数据库设立安全机 制,并为数据库设置用户群组及其各自的操作权限来实现的。 下面为“迷你超市业务信息管理系统”设置安全机制,操作方法: 1.打开数据库“迷你超市业务信息管理系统”; 2.选择“工具”菜单中“安全”子菜单中的“设置安全机制向导”

VB6-加密ACCESS2003

VB6-加密ACCESS2003

彻底解决VB6~VB2005中连接ACCESS数据库(带密码)在Visual Basic中连接和使用Access数据库中,为了确保数据库中信息的安全,往往要求对数据库文件进行加密,以防止非法用户通过其它的常规手段(如使用ACCESS将数据库文件打开、修改)将其打开。

那么,在Visual Basic中如何建立与加密的数据库的连接呢?介绍如下(以下部分内容摘自网络)。

一、建立数据库因为在Visual Basic 6.0中有的数据库连接方式不支持Access 2000版本格式的数据库,为了便于说明问题,本文所提的数据库以Access 97版本数据库为例。

在Microsoft Access 97中建立一个数据库,如:ssgl.mdb,并设置密码,如:“1234”,再将数据库文件和VB中创建的工程文件放在同一目录下。

如果用户的计算机上只有Access 2000的话,可以先在Access 2000中建立ssgl.mdb数据库,并设置密码,再用Access 2000中的“数据库实用工具”将数据库转换成Access 97版本的格式。

当然也可以直接在Visual Basic 6.0集成开发环境中通过“可视化数据管理器”来创建数据库,再到Access 97中设置密码。

通过对数据库文件设置密码,一般情况下,非法用户就不能用常规的手段打开数据库了,对数据库中的信息起到了一定的安全和保密作用。

二、连接加密的Access数据库在Visual Basic 6.0中,要建立与数据库的连接,可采用的技术手段很多,如:数据控件、数据对象、数据环境设计器等。

开发人员可以根据自身的条件和用户的需求进行选择。

限于篇幅,下面只介绍加密的Access数据库与没有加密的Access数据库在连接时的不同之处。

关于没有加密的数据库的连接及访问的方法读者可以参阅其它资料。

1、使用控件① Data控件Data控件是Visual Basic 6.0中的一个内置数据控件,可以通过设置Data 控件的connect、DatabaseName、RecordSource属性实现对数据库的连接和访问。

Access数据安全与备份策略

Access数据安全与备份策略

Access数据安全与备份策略随着信息技术的迅速发展,数据的安全性和备份策略在各行业中变得越来越重要。

对于使用Access数据库的企业和个人用户而言,确保数据的安全性和实施适当的备份策略成为了当务之急。

本文将就Access数据安全性和备份策略进行探讨,为用户提供有效的保护和预防措施。

一、Access数据安全性1. 数据库密码保护为保障数据的机密性,用户可在Access中设置数据库密码。

密码应具备一定强度,包括字母、数字和特殊字符的组合,并定期更改密码以防范潜在的安全威胁。

2. 用户权限管理Access可通过创建用户和设置不同的用户权限来限制不同用户对数据库的访问和操作权限。

通过分配不同级别的权限,如只读权限、编辑权限等,可以有效控制数据的访问范围和操作权限,从而保护数据的安全性。

3. 数据库加密对于特别敏感的数据,用户可以选择对数据库进行加密。

Access提供了一种使用高级加密标准(Advanced Encryption Standard,AES)对整个数据库进行加密的功能。

通过对数据库进行加密,即使数据库文件被非法获取,也无法读取和使用其中的数据。

4. 定期更新和维护及时安装并更新合法的Access补丁和更新程序是确保数据安全性的重要手段。

此外,用户还需要定期进行数据库的维护和修复,例如压缩数据库、修复受损的数据库等,以保持数据库的稳定和完整。

二、Access数据备份策略1. 定期备份用户应该制定定期备份数据库的策略,以防止因数据丢失或数据库损坏而导致的重要数据丢失。

建议至少每周备份一次,根据数据的重要程度和变动频率,可以调整备份频率。

2. 多地备份备份数据时,应将备份文件存储在不同的地点,以防止因灾害、事故等原因导致的数据丢失。

例如,可以将备份文件保存在不同的网络位置和外部存储设备中,确保备份数据的安全性和可靠性。

3. 自动化备份为了简化备份过程并确保数据的及时备份,用户可以利用Access提供的自动化备份功能。

ACCESS的安全性设置

ACCESS的安全性设置

ACCESS的安全性设置应该说,ACCESS的安全性是很弱的,碰到高手一弄,精心作成的软作就完全毁掉了,当然,我是一只菜鸟,我研究ACCESS快十年了,全是用最蠢最笨的办法去解决这些问题,下面,我把我编写的系统的安全性进行一个说明,破解高手就不要来看了,是菜鸟的就来。

一、如果用ACCESS系统内置的保密办法进行安全管理,这是我刚学习ACCESS时使用的一种办法,破解办法很多人都会,这里我就不说怎么破解了。

层次安全管理设置,那么多人、表、窗休进行设置,这是一项伟大的工程,而且效果并不乐观,经常出错把管理员搞得焦头烂额。

然而,这一切并不是最重要的,最重要的是,用ACCESS写软件,最主要的就是多用户使用,如果把数据库放在软件中,会出现以下两个问题让人不得安宁。

1、当这个软件大小超过500M时,运时会出现错误或系统损坏,我相信很多人已经遇到这个问题了。

2、一旦软件密码被破解,所有的数据都完了,有些数据说不定是公司很重要的数据呢。

所以,对于不会编程的人来讲,想用ACCESS做一些管理系统,但对安全性又不放心,用别的软件编写系统,编程的水平要求又极高,更做不到,怎么办呢?二、因为我思考良久,又测试良久,终于,我决定用以下方法来配置ACCESS的安全性:1、用SQL SERVER做为系统数据库并把它安装在公司的服务器上,当然,SQL SERVER的安全设置就比ACCESS高档得多。

2、在客户端电脑上用ODBC联上SQL SERVER的数据库。

3、在ACCESS中用链接的方式接上ODBC。

这样做的好处在于:A、当别人试图从你的ACCESS中导出数据失,ACCESS中根本就没用数据,所以就无法得到系统数据,当然更无法破坏了。

那么,大家一定会想到,人家不用导出,直接打开系统破坏不就得了?所以,下面的方法就是怎样让他打不开系统的主界面(即设计界面)。

三、思路是当系统使用者打开系统的时候,只能看到操作界面,看不到设计界面,这样目的就基本达到了。

VB对Microsoft Access数据库的运用代码

VB对Microsoft Access数据库的运用代码

VB对Microsoft Access数据库的调用管理.用VB6.0计算机编程语言,和Microsoft Access的数据库建立连接。

以便对VB窗口控键,通过VB编程代码对Access数据库进行读取,存储,修改,编辑,管理和计算。

(基本功能如下图)编辑窗体界面及所需参数设计:VB窗体界面编辑及所需参数设计是下面相应控件属性及编程的基础和前提,.通过VB软件的工程下拉菜单的引用命令实现VB和Microsoft Access的数据库建立连接,以便进一步通过VB界面来对数据库的进一步操作。

具体对数据库的一般操作:首记录;上记录;下记录,末记录及搜索,修改,保存,新增记录等功能的详细VB代码如下:Public mydb As DatabasePublic myrs As RecordsetDim step1 As IntegerPrivate Sub Timer1_Timer()Call mymoveEnd SubPublic Sub mymove()Label17.Move Label17.Left + 50 * step1If Label17.Left + 1 * Label17.Width > Form1.Width Then step1 = -1ElseIf Label17.Left < 0 Thenstep1 = 1End IfEnd SubPrivate Sub Command10_Click()Form1.ShowForm2.HideForm3.HideEnd SubPrivate Sub Command11_Click()Form3.ShowForm2.HideForm1.HideEnd SubPrivate Sub Form_Load()Dim i As SingleSet mydb = OpenDatabase(App.Path + "\合同数据库.mdb")Set myrs = mydb.OpenRecordset("合同数据库", dbOpenDynaset)Command9.Enabled = False step1 = -1Timer1.Interval = 100Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text6.Text = ""Text7.Text = ""Text8.Text = ""Text9.Text = ""Text10.Text = ""Text11.Text = ""Text12.Text = ""Text13.Text = ""Text14.Text = ""End SubPrivate Sub Command1_Click() '首记录Dim nm As StringDim nm1 As StringDim nm2 As StringCommand9.Enabled = FalseCommand12.Enabled = TrueCommand13.Enabled = TrueCommand2.Enabled = FalseCommand4.Enabled = TrueCommand1.Enabled = FalseCommand3.Enabled = Truemyrs.MoveFirstCall shuchuEnd SubPrivate Sub Command2_Click() '上记录Dim nm As StringDim nm1 As StringDim nm2 As StringCommand9.Enabled = FalseCommand12.Enabled = TrueCommand13.Enabled = TrueCommand3.Enabled = TrueCommand4.Enabled = Truemyrs.MovePreviousIf myrs.BOF Thenmyrs.MoveFirstCommand2.Enabled = FalseCommand1.Enabled = FalseElse' myrs.MovePreviousEnd IfCall shuchu' List1.AddItem myrs.Fields(1)End SubPrivate Sub Command3_Click() '下记录Dim nm As StringDim nm1 As StringDim nm2 As StringCommand9.Enabled = False Command12.Enabled = True Command13.Enabled = TrueCommand1.Enabled = TrueCommand2.Enabled = TrueIf myrs.EOF Thenmyrs.MoveLastCommand3.Enabled = FalseCommand4.Enabled = False End Ifmyrs.MoveNextIf myrs.EOF Thenmyrs.MoveLastCommand3.Enabled = FalseCommand4.Enabled = FalseEnd IfCall shuchuEnd SubPrivate Sub Command4_Click() '末记录Dim nm As StringDim nm1 As StringDim nm2 As StringCommand9.Enabled = FalseCommand12.Enabled = TrueCommand13.Enabled = Truemyrs.MoveLastCommand1.Enabled = TrueCommand2.Enabled = TrueCommand3.Enabled = FalseCommand4.Enabled = False'Command4.Enabled = FalseCall shuchuEnd SubPrivate Sub Command6_Click() '快速查询Dim findph As StringDim nm As StringDim nm1 As StringDim nm2 As StringCommand4.Enabled = Falsefindph = InputBox("请输入合同号=", "按合同号搜索")If findph <> "" Thenfindph = "合同号='" & findph & "'"'findph = "IP地址='" & findph & "'"myrs.FindFirst (findph)If myrs.NoMatch ThenMsgBox "没有相应合同号的资料记录", vbInformation, "信息"ElseCall shuchuEnd IfEnd IfEnd SubPrivate Sub Command13_Click() '新增记录Command9.Enabled = TrueText1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text6.Text = ""Text7.Text = ""Text8.Text = ""Text9.Text = ""Text10.Text = ""Text11.Text = ""Text12.Text = ""Text13.Text = ""'List1.ClearCommand12.Enabled = Falsemyrs.AddNewText1.SetFocusMsgBox "现在你可以填写数据了,填写完毕后确定请按保存按钮", vbInformation, "系统提示"End SubPrivate Sub Command12_Click() '编辑myrs.EditText1.SetFocusMsgBox "现在你可以修改数据了,修改完后确定请按保存按钮", vbInformation, "系统提示"Command9.Enabled = TrueEnd SubPrivate Sub Command8_Click() '重新输入Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text6.Text = ""Text7.Text = ""Text8.Text = ""Text9.Text = ""Text10.Text = ""Text11.Text = ""Text12.Text = ""Text13.Text = ""Text14.Text = ""' List1.ClearEnd SubPrivate Sub Command9_Click() '保存myrs.Fields("合同号") = Text1.Textmyrs.Fields("ID号") = Text2.Textmyrs.Fields("产品类型") = Text3.Textmyrs.Fields("产品代号") = Text10.Textmyrs.Fields("定货数") = Text4.Textmyrs.Fields("单价") = Text5.Textmyrs.Fields("收到合同日期") = Text6.Textmyrs.Fields("交货日期") = Text7.Textmyrs.Fields("图纸投入生产日期") = Text9.Textmyrs.Fields("完成人员") = Text8.Textmyrs.Fields("备注") = Text11.Textmyrs.Fields("Order NO") = Text12.Textmyrs.Fields("产品净重") = Text13.Textmyrs.Fields("客户代码") = Text14.TextMsgBox "合同资料记录保存成功", vbInformation, "信息"myrs.UpdateCommand12.Enabled = True'Command4.Enabled = TrueCommand9.Enabled = FalseEnd SubPrivate Sub Command5_Click() myrs.Closemydb.CloseEndEnd SubPublic Sub shuchu() ' 输出子程序Dim xx As StringDim yy As StringDim kk As StringDim ph As SingleText1.Text = myrs.Fields(0)Text2.Text = myrs.Fields(1)Text3.Text = myrs.Fields(2)Text4.Text = myrs.Fields(4)Text5.Text = myrs.Fields(5)Text6.Text = myrs.Fields(6)Text7.Text = myrs.Fields(7)Text8.Text = myrs.Fields(9)Text9.Text = myrs.Fields(8)Text10.Text = myrs.Fields(3)Text11.Text = myrs.Fields(10)Text12.Text = myrs.Fields(11)Text13.Text = myrs.Fields(12)Text14.Text = myrs.Fields(13) End Sub。

VBA中的数据加密与保护技巧

VBA中的数据加密与保护技巧

VBA中的数据加密与保护技巧数据在现代社会中扮演着不可忽视的角色,其保护对于个人和组织来说都尤为重要。

在VBA中,数据的加密与保护是一个必不可少的任务。

在本文中,我们将介绍一些VBA中的数据加密与保护技巧,帮助您确保数据的安全性和机密性。

保护VBA代码首先,保护VBA代码是确保数据安全的重要一环。

通过以下方法,您可以有效保护您的VBA代码:1. 密码保护:VBA编辑器提供了一种简单的方法来保护您的代码,即设置密码。

通过设置密码,只有输入正确的密码才能编辑、查看或运行您的代码。

2. 代码混淆:将代码进行混淆是一种常用的保护方法。

通过使用一些技术来修改代码的结构和命名,使其难以阅读和理解。

这种方法可以防止他人对您的代码进行逆向工程,减小代码被恶意使用的风险。

3. 封装代码:将VBA代码封装在独立的模块或类中,可以减少代码的过度暴露。

只需将对外公开的接口暴露出来,而将内部实现细节保持隐藏。

这种方法可以提高代码的可维护性和安全性。

4. 强制更新:不断更新您的VBA代码,可以及时修复已知漏洞和安全隐患。

监控最新的安全公告,并及时更新代码中的相关部分,以确保代码的安全性。

数据加密与解密第二,对于存储和传输的数据,加密是一种常见的保护方法。

以下是在VBA中实现数据加密与解密的一些技巧:1. 对称加密算法:对称加密算法使用相同的密钥进行加密和解密。

在VBA中,可以使用诸如AES(高级加密标准)等算法来实现对称加密。

通过使用密钥,可以确保只有拥有正确密钥的人才能解密数据。

2. 非对称加密算法:非对称加密算法使用一对密钥进行加密和解密。

在VBA中,可以使用RSA(Rivest-Shamir-Adleman)等算法来实现非对称加密。

通过将公钥分发给数据发送者,只有拥有私钥的数据接收者才能解密数据。

3. 加密文件:如果需要将整个文件加密,则可以使用VBA中的文件加密功能。

通过读取文件内容并应用加密算法,可以将文件转换为加密格式。

vb加密access数据库的介绍

vb加密access数据库的介绍

在专业的数据库软件开发中,为了确保数据库中信息的安全,往往要求对数据库文件进行加密,以防止非法用户通过其它的常规手段将其打开。

那么,在Visual Basic中如何建立与加密的数据库的连接呢?笔者在日常工作中,总结了一些方法和技巧,现写出来与同行们交流。

一、连接加密的Access数据库,假设要连接的数据库为hg.mdb,密码为“123”在Visual Basic 6.0中,要建立与数据库的连接,可采用的技术手段很多,如:数据控件、数据对象、数据环境设计器等。

1、使用控件① Data控件Data控件是Visual Basic 6.0中的一个内置数据控件,可以通过设置Data控件的connect、DatabaseName、RecordSource属性实现对数据库的连接和访问。

通过Data控件连接加密的数据库的方法有两种:一种方法是在设计状态时,在“属性窗口”中将Data控件的connect属性的缺省值”Access”改为”; pwd=123”即可,其它属性的设置方法与没有加密的Access数据库的连接相同。

另一种方法是在运行时,通过代码对connect属性赋值来实现。

如:Data1.connect=”; pwd=123”Data1.DatabaseName=APP.path + “\hg.mdb”其中,”123”为Access数据库文件hg.mdb的密码,下同。

②Adodc控件Adodc控件是一个ActiveX控件,它使用Microsoft ActiveX Data Objects(ADO)创建到数据库的连接。

使用Adodc控件之前,要先将Adodc控件添加到控件工具箱中。

方法如下:在VB 6.0种选择“工程”菜单,再点击“部件”菜单项,在弹出的“部件”对话框中选中“Microsoft ADO Data Control 6.0(OLEDB)”选项即可。

通过Adodc控件连接加密的数据库的方法也有两种:一种方法是在设计状态时,在“属性窗口”中,对Adodc控件的ConnectionString属性设置一个有效的连接字符串,并在连接字符串后增加上”; Jet OLEDB: DataBase password=123”,再设置Adodc控件的CommandType、RecordSource的属性就可以创建到加密的数据库的连接了。

ACCESS数据库如何加密和密码删除

ACCESS数据库如何加密和密码删除

数据库加密
第一步:双击图标,打开数据库
第二步:点击“文件”——“打开”——“浏览”后弹出下图
浏览到你要加密的数据库——选中需加密数据库,点击“单开”,选择“以独占方式打开”。

第三步:“文件”——“信息”,弹出如下图
点击“用密码进行加密”——弹出“设置数据库密码”
在输入框中输入你要设置的密码,点击“确定”完成密码设置。

第五步:验证密码是否设置成功
双击刚才设置密码的数据库图标,弹出窗口如下:
输入正确密码进入。

数据库密码删除
第一步:数据需要解密的数据库图标,进入数据库,输入密码。

点击“文件”——打开——浏览——选择需解密的数据库
弹出密码输入框,输入正确密码
第二步:点击“文件”——信息——解密数据库
输入正确密码,就删除了密码了。

在VB下 Access数据库密码的安全设置

在VB下 Access数据库密码的安全设置

在VB下 Access数据库密码的安全设置
宁德琼
【期刊名称】《中小企业管理与科技》
【年(卷),期】2009(000)024
【摘要】本文从VB程序设计的角度探讨了Access数据库密码的保存方式及密码本身加码、解码的安全问题,以确保数据的完整性和安全性.
【总页数】1页(P272)
【作者】宁德琼
【作者单位】曲靖师范学院计算机科学与工程学院
【正文语种】中文
【中图分类】TP311.11
【相关文献】
1.从密码设置的习惯探讨设置安全密码 [J], 梁勇勇
2.基于VB的Access数据库的安全设置 [J], 陈红琳
3.Access数据库系统安全性分析及在VB下的安全设置 [J], 徐静
4.密码密码轰——如何安全设置大量的常用密码 [J], Karsus
5.密码密码轰——如何安全设置大量的常用密码 [J], Karsus
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在VB下Access数据库密码的安全设置.txt-//自私,让我们只看见自己却容不下别人。

如果
发短信给你喜欢的人,他不回,不要再发。

看着你的相片,我就特冲动的想P成黑白挂墙上!
有时,不是世界太虚伪,只是,我们太天真。

在VB下Access数据库密码的安全设置
宁德琼(曲靖师范学院计算机科学与工程学院)
摘要:本文从VB程序设计的角度探讨了Access数据库密码的保存方式及密码本身加码、解
码的安全问题,以确保数据的完整性和安全性。

关键词:VB Access 密码
中图分类号:TP311.11 文献标识码:A
0 引言
Access 数据库作为微软推出的以标准JET为引擎的桌面型数据库系统,它界面友
好、操作简单,是开发中小型数据库应用系统的常用平台,以其功能全面、程序设计方便等
特点得到了广泛应用。

但是随着Access数据库的广泛应用,对其安全性的需求也越来越高,
而数据库的安全主要体现在数据的安全传送与安全存储,而数据的传送与存储大多数都是通
过对数据本身的加密来实现的;所以,加密和解密问题也就成为Access数据库安全的首要问
题。

1 Access密码的安全隐患
1.1 Access 数据库的存储隐患 Access 数据库的安全隐患第一就是密码的保存问
题,将密码放在程序中和文件中,如果获得或者猜到Access据库的存储路径和数据库名,则
该数据库就可以被下载到本地[1]。

例如:对于校园网上的一个图书查询的Access数据库,
人们一般命名为book.mdb、Library而存储的路径一般为“URL/database”或干脆
放在根目录(“URL/”)下。

这样,只要在浏览器地址栏中敲入地址: “URL/database/Library.mdb”,就可以轻易地把sLibrary.mdb下载到本地的机器中。

1.2 Access 数据库的解密隐患 Access数据库的加密机制非常简单,所以即使数据
库设置了密码,解密也很容易. 该数据库系统通过将用户输入的密码与某一固定密钥进行“异
或”来形成一个加密串,并将其存储在*.mdb 文件中从地址“&H42”开始的区域内. 由于异
或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件中的加密串进
行第二次异或操作,就可以轻松地得到Access数据库的密码.基于这种原理,可以很容易地
编制出解密程序[2]。

由此可见,无论是否设置了数据库密码,只要数据库被下载,其信息就
没有任何安全性可言了。

2 在VB中提高Access 数据库安全性的方法
在VB中,通过编程来解决数据库中密码的安全问题,通过VB中的API函数来将密
码保存到注册表中,以实现用户合法性检验的方法;同时对密码进行加密和解密。

2.1 利用API函数在注册表中进行密码操作从以上分析密码存储的隐患来看,密码
保存在程序和文件中,安全性能较差;如果考虑将密码存入注册表中,通过对注册表的操作,
可以将密码随便放到注册表的什么地方;要想找到密码字符可谓大海捞针。

VB为用户提供了4个用于注册表操作的函数SaveSetting、GetSetting、GetAllSettings和DeleteSeting,使用这四个函数可以方便地操作注册表。

通过函数GetString()将注册表项的值赋值给字符变量M,窗体装入程序段中的M= GetSetting(HKEY_CURRENT_USER,”RegData\AA”,””)语句。

当用户输入密码后进行核对,
如果输入的密码与M中相同则为合法用户,登录成功。

当窗体装入时调用GetString函数,
在GetString函数中调用API函数RegOpenKey打开指定表项,打开指定表项后,调入函数RegQueryStringValue,在RegQueryStringValue函数中首先调用API函数 RegQueryValueEx
hKey,以得到项值空间的大小;调用VB的String函数将变量lDataBufSize按其大小设为CHR$(0);对所得键值去掉右侧空字符并将结果赋值给函数名为RegQueryStringValue,程序返回到它的调用之处,GetString函数操作完毕将键值赋给变量M,即可等到保存在注册表中的密码[3]。

主要程序如下:
Function GetString(hKey As Long, strPath As String, strValue As String) Dim Ret
RegOpenKey hKey, strPath, Ret
GetString = RegQueryStringValue(Ret, strValue)
RegCloseKey Ret
End Function
Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String) As String
Dim strString As String
RegQueryValueEx hKey, strValueName, 0, lValueType, ByVal 0, lDataBufSize strBuf = String(lDataBufSize, Chr$(0))
RegQueryValueEx hKey, strValueName, 0, 0, ByVal strBuf, lDataBufSize
RegQueryStringValue = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
Exit Function
2.2 在VB中对密码进行加密和解密当然,为了保证密码的安全,除了考虑密码的存放方式外,另一方面就是对密码本身加密,得到一个加密的密码,将密码加密后存放起来就更安全了。

对密码加密实际是将作为密码的字符从一种表现形式变为另一种表现形式的过程。

其中一种方法是设置一个被称为“密钥”的字符或字符串,通过使用密钥对密码进行操作,将明码变成密码。

在解密时再使用密钥对密码进行逆操作,密码就还原了。

程序使用当前输入的密码作为密钥对输入的密码作加密操作,将加密后的密码存入文本文件 PassWord.txt。

程序中使用Ciphe过程和NumericPassword函数对密码进行加密操作,其中Cipher密钥。

当然,密码加密后在使用时就要对它进行解密,它们的主要程序如下:
Private Function NumericPassword(ByVal Password As String) As Long
Dim Value As Long,Ch As Long, Shift1 As Long,Shift2 As Long
Dim I As Integer, Str_len As Integer
Str_len = Len(Password)
For I = 1 To Str_len
Ch = Asc(Mid$(Password, I, 1))
Value = Value Xor (Ch * 2 ^ Shift1)
Value = Value Xor (Ch * 2 ^ Shift2)
Shift1 = (Shift1 + 7) Mod 19
Shift2 = (Shift2 + 13) Mod 23
Next I
NumericPassword = Value
End Function
3 结束语
通过对Access数据库密码安全隐患进行分析,对密码的保存方式和密码本身的加密,防止数据库被下载和密码破解起到了一定的作用,道高一尺,魔高一丈,尽管人们想到种种办法来维护数据库安全,但是也总是不断发现漏洞。

所以,为确保数据库的的安全,数据定期备份与恢复是必不可少的。

相关文档
最新文档