快捷搜索:

用asp获取文件md5值

网上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 "

End If

Else

XmlDoc.LoadXml ""

End If

End Sub

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(WordStr(NodeText,"]]>","]]>"))

ChildNode.appendChild(createCDATASection)

Else

ChildNode.Text = NodeText

End If

End Sub

'--------------------------------------------------

'打印发送哀求XML数据

'--------------------------------------------------

Public Sub PrintSendXmlData()

Response.Clear

Response.ContentType = "text/xml"

Response.CharSet = "gb2312"

Response.Expires = 0

Response.Write ""&vbNewLine

Response.Write XmlDoc.documentElement.XML

End Sub

'--------------------------------------------------

'打印返回XML数据

'--------------------------------------------------

Public Sub PrintGetXmlData()

Response.Clear

Response.ContentType = "text/xml"

Response.CharSet = "gb2312"

Response.Expires = 0

If IsObject(m_GetXmlDoc) Then

Response.Write ""&vbNewLine

Response.Write m_GetXmlDoc.documentElement.XML

Else

Response.Write ""

End If

End Sub

Rem 保存发送哀求xml数据到文件,文件名为sendxml_日期.txt

Public Sub SaveSendXmlDataToFile()

Dim filename,str

filename = "sendxml_" & DateValue(now) & ".txt"

str = ""

str = str & ""& Now() & vbNewLine

str = str & "---------------------------------------------"& vbNewLine

str = str & "" & vbNewLine

str = str & XmlDoc.documentElement.XML & vbNewLine

str = str & "---------------------------------------------"& vbNewLine

str = str & vbNewLine & vbNewLine & vbNewLine

WriteStringToFile filename,str

End Sub

Rem 保存返回XML数据到文件,文件名为getxml_日期.txt

Public Sub SaveGetXmlDataToFile()

Dim filename,str

filename = "getxml_" & DateValue(now) & ".txt"

str = ""

str = str & ""& Now() & vbNewLine

str = str & "---------------------------------------------"& vbNewLine

If IsObject(m_GetXmlDoc) Then

str = str & "" & vbNewLine

str = str & m_GetXmlDoc.documentElement.XML

Else

str = str & "" & vbNewLine & "" & vbNewLine & ""

End If

str = str & vbNewLine

str = str & "---------------------------------------------"& vbNewLine

str = str & vbNewLine & vbNewLine & vbNewLine

WriteStringToFile filename,str

End Sub

'--------------------------------------------------

'获取返回xml的节点信息

'XmlClassObj.GetSingleNode("//msg")

'--------------------------------------------------

Public Function GetSingleNode(nodestring)

If IsObject(m_GetXmlDoc) Then

GetSingleNode = m_GetXmlDoc.documentElement.selectSingleNode(nodestring).text

Else

GetSingleNode = ""

End If

End Function

''''''''''''''''''接管xml部分停止

Rem 保存调试数据到文件,文件名为debugnote_日期.txt

Public Sub SaveDebugStringToFile(debugstr)

Dim filename,str

filename = "debugnote_" & DateValue(now) & ".txt"

str = ""

str = str & ""& Now() & vbNewLine

str = str & "---------------------------------------------"& vbNewLine

str = str & debugstr & vbNewLine

str = str & "---------------------------------------------"

str = str & vbNewLine & vbNewLine & vbNewLine

WriteStringToFile filename,str

End Sub

'公共措施停止--------------------------

End Class

%>

filemd5fun.asp

") '用xml字符添补XMLDOC工具,用来发送xml

XmlClassObj.URL = "http://www.shouji138.com/aspnet2/FileMD5.aspx" '设置相应的url,这里应该改成你的网址

.net端代码:

MD5.cs

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

namespace Winsteps.FileMD5

{

public class MD5

{

public static string md5_hash(string path)

{

try

{

FileStream get_file = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);

System.Security.Cryptography.MD5CryptoServiceProvider get_md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();

byte[] hash_byte = get_md5.ComputeHash(get_file);

string resule = System.BitConverter.ToString(hash_byte);

resule = resule.WordStr("-", "");

return resule;

}

catch (Exception e)

{

return e.Message;

}

}

}

}

FileMD5.aspx

手机主题网:http://www.shouji138.com

您可能还会对下面的文章感兴趣: