本站首页   业内资讯   前沿下载  网络导航   本站论坛  
系统之家
设为首页
加入收藏
关于我们
IT业界  软件应用  电脑硬件  数码资讯  苹果MAC  Unix/Linux  系统优化  Web技术  认证考试  安全相关  游戏业界  Win2008  
首页 > Web技术 > ASP
 

 

用asp获取文件md5值
作者: 发布时间:2008-09-08 10:49:37 来源:

网上asp加密字符的MD5很多,也很普遍,但是对文件进行md5的确很少,因为受到asp语言本身的限制。我们知道字符串的md5可以对明文进行不可逆的加密,从而保证数据储存或者传送的安全性。同样的,对文件进行md5加密也是为了保证在网络传送时不被修改和校验,另外还有一个用途就是在个人站点里面的应用:可以保证上传的图片或文件具有唯一性。原理是,上传到服务器之后,同时在数据库中记录该上传文件的md5值,这样在下次传同样文件的时候,可以通过查询数据库是否是相同的文件,md5值相同,我们就认为它是相同的文件,md5值就是文件的“身份证”,其实百度也有这方面的应用,在百度搜索图片,点开图片后,有时候会出现“您还可以点击以下链接查看到这张图片:XXX网址”,原理也是一样,对文件进行md5。
废话少说,开始正文。
一、asp通过xml交互方式调用.Net程序实现文件md5
asp由于本身语言的限制,无法实现文件的md5,但是.net确可以,那是不是可以通过.net对文件进行md5,然后发送信息给asp接收,这样就可以做到asp的md5了呢,答案是肯定的。这里涉及到asp与.net程序间的交互,我以前写过一个asp的类:《asp处理xml数据的发送、接收类》,可以上我的百度空间看:http://hi.baidu.com/manbutianmi/blog/item/dec182fc6db36587b801a0f6.html,讲的是asp处理xml数据的发送与接收,可用于各种异构系统之间API接口间通讯。本文正好是这个类的一个应用。代码如下:

asp端代码

xmlcls.asp
<%
Rem 处理xml数据的发送、接收类
'--------------------------------------------------
'转载的时候必须保留此版权信息
'作者:walkman
'网址:手机主题网:http://www.shouji138.com
'版本:ver1.0
'--------------------------------------------------
Class XmlClass
 
 Rem 变量定义
 Private XmlDoc,XmlHttp
 Private MessageCode,SysKey,XmlPath
 Private m_GetXmlDoc,m_url
 Private m_XmlDocAccept

 Rem 初始化
 Private Sub Class_Initialize()
  On Error Resume Next
  MessageCode = ""
  XmlPath = ""
  Set XmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0")
  XmlDoc.ASYNC = False
 End Sub
 
 Rem 销毁对象
 Private Sub Class_Terminate()
  If IsObject(XmlDoc) Then Set XmlDoc = Nothing
  If IsObject(m_XmlDocAccept) Then Set m_XmlDocAccept = Nothing
  If IsObject(m_GetXmlDoc) Then Set m_GetXmlDoc = Nothing  
 End Sub

 
 '公共属性定义开始--------------------------
 Rem 错误信息
 Public Property Get Message()
  Message = MessageCode
 End Property


 Rem 发送xml的地址
 Public Property Let  URL(str)
  m_url = str
 End Property
 '公共属性定义结束--------------------------

 
 '私有过程、方法开始--------------------------
 Rem 加载xml
 Private  Sub LoadXmlData()
  If XmlPath <> "" Then
   If Not XmlDoc.Load(XmlPath) Then
    XmlDoc.LoadXml "<?xml version=""1.0"" encoding=""gb2312""?><root/>"
   End If
  Else
   XmlDoc.LoadXml "<?xml version=""1.0"" encoding=""gb2312""?><root/>"
  End If
 End Sub

 Rem 字符转化
 Private Function AnsiToUnicode(ByVal str)
  Dim i, j, c, i1, i2, u, fs, f, p
  AnsiToUnicode = ""
  p = ""
  For i = 1 To Len(str)
   c = Mid(str, i, 1)
   j = AscW(c)
   If j < 0 Then
    j = j + 65536
   End If
   If j >= 0 And j <= 128 Then
    If p = "c" Then
     AnsiToUnicode = " " & AnsiToUnicode
     p = "e"
    End If
    AnsiToUnicode = AnsiToUnicode & c
   Else
    If p = "e" Then
     AnsiToUnicode = AnsiToUnicode & " "
     p = "c"
    End If
    AnsiToUnicode = AnsiToUnicode & ("&#" & j & ";")
   End If
  Next
 End Function
 
 Rem 字符转化
 Private Function strAnsi2Unicode(asContents)
  Dim len1,i,varchar,varasc
  strAnsi2Unicode = ""
  len1=LenB(asContents)
  If len1=0 Then Exit Function
    For i=1 to len1
   varchar=MidB(asContents,i,1)
   varasc=AscB(varchar)
   If varasc > 127  Then
    If MidB(asContents,i+1,1)<>"" Then
     strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
    End If
    i=i+1
    Else
    strAnsi2Unicode = strAnsi2Unicode & Chr(varasc)
    End If
  Next
 End Function


 Rem 往文件中追加字符
 Private Sub WriteStringToFile(filename,str)
  On Error Resume Next
  Dim fs,ts
  Set fs= createobject("script_ing.filesystemobject")
  If Not IsObject(fs) Then Exit Sub  
  Set ts=fs.OpenTextFile(Server.MapPath(filename),8,True)
  ts.writeline(str)
  ts.close
  Set ts=Nothing
  Set fs=Nothing
 End Sub
 '私有过程、方法结束--------------------------
 

 '公共方法开始--www.devdao.com------------------------
 
 '''''''''''发送xml部分开始
 Rem 从外部xml文件填充XmlDoc对象
 Public Sub LoadXmlFromFile(path)
  XmlPath =  Server.MapPath(path)
  LoadXmlData()
 End Sub
 
 Rem 用字符串填充XmlDoc对象
 Public Sub LoadXmlFromString(str)
  XmlDoc.LoadXml str
 End Sub
 
 Rem  设置node的参数 如 NodeValue "appID",AppID,1,False
 '--------------------------------------------------
 '参数 :
 'NodeName 节点名
 'NodeText 值
 'NodeType 保存类型 [text=0,cdata=1]
 'blnEncode 是否编码 [true,false]
 '--------------------------------------------------
 Public Sub NodeValue(Byval NodeName,Byval NodeText,Byval NodeType ,Byval blnEncode)
  Dim ChildNode,CreateCDATASection
  NodeName = Lcase(NodeName)
  If XmlDoc.documentElement.selectSingleNode(NodeName) is nothing Then
   Set ChildNode = XmlDoc.documentElement.appendChild(XmlDoc.createNode(1,NodeName,""))
  Else
   Set ChildNode = XmlDoc.documentElement.selectSingleNode(NodeName)
  End If
  If blnEncode = True Then
   NodeText = AnsiToUnicode(NodeText)
  End If
  If NodeType = 1 Then
   ChildNode.Text = ""
   Set CreateCDATASection = XmlDoc.createCDATASection(Replace(NodeText,"]]>","]]&gt;"))
   ChildNode.appendChild(createCDATASection)
  Else
   ChildNode.Text = NodeText
  End If
 End Sub


 '--------------------------------------------------
 '获取发送包XML中节点的值
 '参数 :
 'Str 节点名
 '--------------------------------------------------
 Public Property Get XmlNode(Byval Str)
  If XmlDoc.documentElement.selectSingleNode(Str) is Nothing Then
   XmlNode = "Null"
  Else
   XmlNode = XmlDoc.documentElement.selectSingleNode(Str).text
  End If
 End Property

 '--------------------------------------------------
 '获取返回XML数据对象
 '例:
 '当GetXmlData不为NULL时,GetXmlData为XML对象
 '--------------------------------------------------
 Public Property Get GetXmlData()
  Set GetXmlData = m_GetXmlDoc
 End Property


 '--------------------------------------------------
 '发送xml包
 '--------------------------------------------------
 Public Sub SendHttpData()
  Dim i,GetXmlDoc,LoadAppid
  Set Xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
  Set GetXmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0") ' 返回xml包
   XmlHttp.Open "POST", m_url, false
   XmlHttp.SetRequestHeader "content-type", "text/xml"
   XmlHttp.Send XmlDoc
   'Response.Write strAnsi2Unicode(xmlhttp.responseBody)
   If GetXmlDoc.load(XmlHttp.responseXML) Then
    Set m_GetXmlDoc = GetXmlDoc
   Else
    MessageCode = "请求数据错误!"
    Exit Sub
   End If
  Set GetXmlDoc = Nothing
  Set XmlHttp = Nothing
 End Sub
 
 
 

 

 '--------------------------------------------------
 '打印发送请求XML数据
 '--------------------------------------------------
 Public Sub PrintSendXmlData()
  Response.Clear
  Response.ContentType = "text/xml"

 1/4    1 2 3 4 ›› ›|

 
   
※ 相关信息
无相关信息

   
   
 
 站内搜索
 
 网站最新
 
 人气排行 
 
 阿里妈妈

网站留言关于我们广告业务注册登录合作伙伴网站地图
Xtzj.Com 版权所有 辽ICP备05013013号
Copyright © 2008 All rights reserved