asp实现ACCESS数据库加密方法

作者:翟振凯 来源:www.xiaoqi.net 时间:2008-04-18 12:33:00 

关于本文:

本着互联网共享主义精神,特写此文献给建站新手,授人以鱼,不如授人以渔,本文所讲的只是方法和原理,希望大家看完此文,能够从中得到些帮助和启发。

本程序是翟振恺(小琦)原创的,现在我免费发布出来,请转用或转载时不要把版权去掉。

本程序是针对不能用组件加密asp的用户写的,应该可以有效的保护ACCESS数据。

由于本人写作水平有限,写的不好的地方,还请大家多多包涵,如要批评或意见,请加我QQ。


<%
'www.xiaoqi.net
'QQ:22336848
if Request("mdbname")<>"" then
'------------------------取磁盘序列号----------------------------小琦
set fs=server.createObject("scripting.filesystemobject") 
testDrive="G:\" 
set f=fs.getdrive(testDrive) 
''调用GetDrive方法,将驱动器赋予一个变量 
xlh=trim(f.serialnumber) '取到磁盘序列号
'-------------------------取绑定的网站地址---------------------------小琦
myname=Request.ServerVariables("SERVER_NAME")'我绑定我的主机名
'-------------------------取二进制数据---------------------------小琦
url=server.MapPath(".")&"\[url]www.xiaoqi.net[/url]" '取一个exe文件或其它的文件作为提供加密的文件,为了安全,你可以把这个文件放到别人下载不到的地方。
Set  fso=Server.CreateObject("Scripting.FileSystemObject")  
Set  fl=fso.getfile(url)  
flsize=fl.size  
flName=fl.name  
Set  objStream  =  Server.CreateObject("ADODB.Stream")  
objStream.Open  
objStream.Type  =  1  
objStream.LoadFromFile url 
Password=objStream.Read'二进制数据
Password=left(Password,4)&right(xlh,3)&myname'数据库密码用二进制数据+磁盘序列号+绑定的网站地址
Password=left(Password,19)'ACCESS数据库密码好像最多20个字符,我用了19个
db="xq.mdb"
SavePath=Server.MapPath(".")
'----------------------------------------------------小琦 
        Application.Contents.RemoveAll()
        
        Dim fs, Engine
        Set fs = CreateObject("Scripting.FileSystemObject")
        mdbname = Request("mdbname")
        If fs.FileExists(Server.Mappath(mdbname)) Then
                Set Engine = CreateObject("JRO.JetEngine")
'----------------------------------------------------改数据库密码        
if request("dz")=1 then        
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath(mdbname), "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password="&Password&";Data Source=" & Server.Mappath(mdbname & ".temp")
else
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password="&Password&";Data Source=" & Server.Mappath(mdbname), "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath(mdbname & ".temp")
end if
'----------------------------------------------------改数据库密码                
                fs.CopyFile Server.Mappath(mdbname & ".temp"),Server.Mappath(mdbname)
                fs.DeleteFile(Server.Mappath(mdbname & ".temp"))
                Set fs = Nothing
                Set Engine = nothing
                if request("dz")=1 then        
                Response.write "<p><font color=#FF0000>数据库加密成功!...</font>"
                Else
                Response.write "<p><font color=#FF0000>数据库解密成功!...</font>"
                end if
        Else                
                Set fs = Nothing
                Response.Write "<p><br><br>数据库名称或路径不正确. 压缩失败!" & vbCrLf
        End If

end if
%>
<form method="POST" action="--WEBBOT-SELF--">
        <p><b>加密解密码数据库</b></p>
        <p><input type="text" name="mdbname" size="20" value="测试.mdb"> 数据库名</p>
        <p><input type="radio" value="1" name="dz" checked>加密 
        <input type="radio" value="2" name="dz">解密</p>
        <p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
</form>

连接加密后的数据库的方法:

<b>测试数据库连接</b>
<!-- 绑定域名和数据库,绑磁盘序列号的我没做,其实也很简单 -->
<%
db="测试.mdb"
%><!-- 下面这句是加密函数 --><%
'------------------------取磁盘序列号----------------------------小琦
set fs=server.createObject("scripting.filesystemobject") 
testDrive="G:\" 
set f=fs.getdrive(testDrive) 
''调用GetDrive方法,将驱动器赋予一个变量 
xlh=trim(f.serialnumber) '取到磁盘序列号
'-------------------------取绑定的网站地址---------------------------小琦
myname=Request.ServerVariables("SERVER_NAME")'我绑定我的主机名
'-------------------------取二进制数据---------------------------小琦
url=server.MapPath(".")&"\[url]www.xiaoqi.net[/url]" '取一个exe文件或其它的文件作为提供加密的文件,为了安全,你可以把这个文件放到别人下载不到的地方。
Set  fso=Server.CreateObject("Scripting.FileSystemObject")  
Set  fl=fso.getfile(url)  
flsize=fl.size  
flName=fl.name  
Set  objStream  =  Server.CreateObject("ADODB.Stream")  
objStream.Open  
objStream.Type  =  1  
objStream.LoadFromFile url 
Password=objStream.Read'二进制数据
Password=left(Password,4)&right(xlh,3)&myname'数据库密码用二进制数据+磁盘序列号+绑定的网站地址
Password=left(Password,19)'ACCESS数据库密码好像最多20个字符,我用了19个

%><!-- 下面是连接数据库 --><%

dim conn
Set conn = Server.CreateObject("ADODB.Connection") 
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password="&Password&";Data Source=" & server.MapPath(db) 
set rs = conn.execute("select * from [test] order by id desc ")
response.write rs("name")
conn.close
conn=noting
%>
标签:加密,access,数据库,asp
0
投稿

猜你喜欢

  • Python利用机器学习算法实现垃圾邮件的识别

    2021-02-24 04:31:04
  • Python GAE、Django导出Excel的方法

    2023-02-27 13:59:09
  • vue3的watch用法以及和vue2中watch的区别

    2024-04-30 08:42:37
  • 简单了解Javscript中兄弟ifream的方法调用

    2024-04-22 22:29:30
  • vue中的面包屑导航组件实例代码

    2024-05-02 17:11:28
  • vue设置导航栏、侧边栏为公共页面的例子

    2024-05-29 22:25:07
  • Python实现求最大公约数及判断素数的方法

    2021-06-13 02:20:20
  • Python通过命令提示符安装matplotlib

    2022-12-05 01:16:53
  • PHP的mysqli_stat()函数讲解

    2023-06-12 08:11:33
  • Pytes正确的配置使用日志功能

    2023-07-18 05:51:17
  • 使用Python从有道词典网页获取单词翻译

    2022-12-10 21:18:03
  • Python+Pygame实现彩色五子棋游戏

    2021-03-29 23:47:34
  • TensorFlow内存管理bfc算法实例

    2023-09-08 21:42:24
  • python重复值处理得方法

    2023-07-03 20:57:43
  • 答题辅助python代码实现

    2022-06-30 19:57:35
  • [翻译]标记语言和样式手册 Chapter 11 打印样式

    2008-02-11 18:44:00
  • python实现彩色图转换成灰度图

    2022-03-11 02:41:30
  • Webpack基础教程之名词解释

    2022-12-17 19:04:30
  • 教你给《羊了个羊》配置一套智能客服系统

    2022-01-25 21:33:36
  • oracle数据库排序后如何获取第一条数据

    2024-01-18 11:44:01
  • asp之家 网络编程 m.aspxhome.com