| 订阅 | 在线投稿
分享
 
 
 

用asp获取文件md5值

来源:互联网网民  宽屏版  评论
2008-09-02 06:53:08

本文为【用asp获取文件md5值】的汉字拼音对照版显示拼音

wangshangaspjiamizifudeMD5henduoyehenpubiandanshiduiwenjianjinxingmd5dequehenshaoyinweishoudaoaspyuyanbenshendexianzhiwomenzhidaozifuchuandemd5keyiduimingwenjinxingbukenidejiamicongerbaozhengshujuchucunhuozhechuansongdeanquanxingtongyangdeduiwenjianjinxingmd5jiamiyeshiweilebaozhengzaiwangluochuansongshibubeixiugaihexiaoyanlingwaihuanyouyigeyongtujiushizaigerenzhandianlimiandeyingyong:keyibaozhengshangchuandetupianhuowenjianjuyouweiyixingyuanlishi,shangchuandaofuwuqizhihou,tongshizaishujukuzhongjilugaishangchuanwenjiandemd5zhizheyangzaixiacichuantongyangwenjiandeshihoukeyitongguochaxunshujukushifoushixiangtongdewenjianmd5zhixiangtongwomenjiurenweitashixiangtongdewenjianmd5zhijiushiwenjiandeshenfenzhengqishibaiduyeyouzhefangmiandeyingyongzaibaidusousuotupiandiankaitupianhouyoushihouhuichuxianninhuankeyidianjiyixialianjiechakandaozhezhangtupianXXXwangzhiyuanliyeshiyiyangduiwenjianjinxingmd5

feihuashaoshuokaishizhengwen

yiasptongguoxmljiaohufangshitiaoyong.Netchengxushixianwenjianmd5

aspyouyubenshenyuyandexianzhiwufashixianwenjiandemd5danshi.netquekeyinashibushikeyitongguo.netduiwenjianjinxingmd5,ranhoufasongxinxigeiaspjieshouzheyangjiukeyizuodaoaspdemd5lenedaanshikendingdezhelishejidaoaspyu.netchengxujiandejiaohuwoyiqianxieguoyigeaspdeleiaspchulixmlshujudefasongjieshouleikeyishangwodebaidukongjiankanhttp://hi.baidu.com/manbutianmi/blog/item/dec182fc6db36587b801a0f6.htmljiangdeshiaspchulixmlshujudefasongyujieshoukeyongyugezhongyigouxitongzhijianAPIjiekoujiantongxunbenwenzhenghaoshizhegeleideyigeyingyongdaimaruxia

aspduandaima

xmlcls.asp

<%

Rem chulixmlshujudefasongjieshoulei

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

'zhuanzaideshihoubixubaoliucibanquanxinxi

'zuozhe:walkman

'wangzhi:shoujizhutiwang:http://www.shouji138.com

'banben:ver1.0

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

Class XmlClass

Rem bianliangdingyi

Private XmlDoc,XmlHttp

Private MessageCode,SysKey,XmlPath

Private m_GetXmlDoc,m_url

Private m_XmlDocAccept

Rem chushihua

Private Sub Class_Initialize()

On Error Resume Next

MessageCode = ""

XmlPath = ""

Set XmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0")

XmlDoc.ASYNC = False

End Sub

Rem xiaohuiduixiang

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

'gonggongshuxingdingyikaishi--------------------------

Rem cuowuxinxi

Public Property Get Message()

Message = MessageCode

End Property

Rem fasongxmldedizhi

Public Property Let URL(str)

m_url = str

End Property

'gonggongshuxingdingyijieshu--------------------------

'siyouguochengfangfakaishi--------------------------

Rem jiazaixml

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 zifuzhuanhua

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 zifuzhuanhua

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 wangwenjianzhongzhuijiazifu

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

'siyouguochengfangfajieshu--------------------------

'gonggongfangfakaishi--www.devdao.com------------------------

'''''''''''fasongxmlbufenkaishi

Rem congwaibuxmlwenjiantianchongXmlDocduixiang

Public Sub LoadXmlFromFile(path)

XmlPath = Server.MapPath(path)

LoadXmlData()

End Sub

Rem yongzifuchuantianchongXmlDocduixiang

Public Sub LoadXmlFromString(str)

XmlDoc.LoadXml str

End Sub

Rem shezhinodedeshenshu ru NodeValue "appID",AppID,1,False

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

'shenshu

'NodeName jiedianming

'NodeText zhi

'NodeType baocunleixing [text=0,cdata=1]

'blnEncode shifoubianma [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,"]]>","]]>"))

ChildNode.appendChild(createCDATASection)

Else

ChildNode.Text = NodeText

End If

End Sub

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

'huoqufasongbaoXMLzhongjiediandezhi

'shenshu

'Str jiedianming

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

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

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

'huoqufanhuiXMLshujuduixiang

'li

'dangGetXmlDatabuweiNULLshiGetXmlDataweiXMLduixiang

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

Public Property Get GetXmlData()

Set GetXmlData = m_GetXmlDoc

End Property

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

'fasongxmlbao

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

Public Sub SendHttpData()

Dim i,GetXmlDoc,LoadAppid

Set Xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")

Set GetXmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0") ' fanhuixmlbao

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 = "qingqiushujucuowu"

Exit Sub

End If

Set GetXmlDoc = Nothing

Set XmlHttp = Nothing

End Sub

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

'dayinfasongqingqiuXMLshuju

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

Public Sub PrintSendXmlData()

Response.Clear

Response.ContentType = "text/xml"

Response.CharSet = "gb2312"

Response.Expires = 0

Response.Write "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine

Response.Write XmlDoc.documentElement.XML

End Sub

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

'dayinfanhuiXMLshuju

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

Public Sub PrintGetXmlData()

Response.Clear

Response.ContentType = "text/xml"

Response.CharSet = "gb2312"

Response.Expires = 0

If IsObject(m_GetXmlDoc) Then

Response.Write "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine

Response.Write m_GetXmlDoc.documentElement.XML

Else

Response.Write "<?xml version=""1.0"" encoding=""gb2312""?><root></root>"

End If

End Sub

Rem baocunfasongqingqiuxmlshujudaowenjianwenjianmingweisendxml_riqi.txt

Public Sub SaveSendXmlDataToFile()

Dim filename,str

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

str = ""

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

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

str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine

str = str & XmlDoc.documentElement.XML & vbNewLine

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

str = str & vbNewLine & vbNewLine & vbNewLine

WriteStringToFile filename,str

End Sub

Rem baocunfanhuiXMLshujudaowenjianwenjianmingweigetxml_riqi.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 & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine

str = str & m_GetXmlDoc.documentElement.XML

Else

str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>"

End If

str = str & vbNewLine

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

str = str & vbNewLine & vbNewLine & vbNewLine

WriteStringToFile filename,str

End Sub

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

'huoqufanhuixmldejiedianxinxi

'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

''''''''''''''''''fasongxmlbufenjieshu

''''''''''''''''''jieshouxmlbufenkaishi

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

'jieshouXMLbaocuowuxinxitongguoMessageduixianghuoqu

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

Public Function AcceptHttpData()

Dim XMLdom

Set XMLdom = Server.CreateObject("Microsoft.XMLDOM")

XMLdom.Async = False

XMLdom.Load(Request)

If XMLdom.parseError.errorCode <> 0 Then

MessageCode = "bunengzhengquejieshoushuju" & "Descript_ion: " & XMLdom.parseError.reason & "<br>Line: " & XMLdom.parseError.Line

Set m_XmlDocAccept = Null

Else

Set m_XmlDocAccept = XMLdom

End If

End Function

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

'fanhuijieshouXMLbaojiedianxinxi

'XmlClassObj.GetSingleNode("//msg")

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

Public Function AcceptSingleNode(nodestring)

If IsObject(m_XmlDocAccept) Then

AcceptSingleNode = m_XmlDocAccept.documentElement.selectSingleNode(nodestring).text

Else

AcceptSingleNode = ""

End If

End Function

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

'dayinjieshouduanjieshoudaodeXMLshuju

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

Public Sub PrintAcceptXmlData()

Response.Clear

Response.ContentType = "text/xml"

Response.CharSet = "gb2312"

Response.Expires = 0

If IsObject(m_XmlDocAccept) Then

Response.Write "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine

Response.Write m_XmlDocAccept.documentElement.XML

Else

Response.Write "<?xml version=""1.0"" encoding=""gb2312""?><root></root>"

End If

End Sub

Rem baocunjieshoudeXMLbaoshujudaowenjianwenjianmingweiacceptxml_riqi.txt

Public Sub SaveAcceptXmlDataToFile()

Dim filename,str

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

str = ""

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

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

If IsObject(m_XmlDocAccept) Then

str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine

str = str & m_XmlDocAccept.documentElement.XML

Else

str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>"

End If

str = str & vbNewLine

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

str = str & vbNewLine & vbNewLine & vbNewLine

WriteStringToFile filename,str

End Sub

''''''''''''''''''jieshouxmlbufenjieshu

Rem baocuntiaoshishujudaowenjianwenjianmingweidebugnote_riqi.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

'gonggongfangfajieshu--------------------------

End Class

%>

filemd5fun.asp

<!--#Include File="xmlcls.asp"-->

<%

Rem qudewenjiandemd5shenshuweiwenjianming

Function GetFileMD5(filename)

Const Apisysno = "k8n6g2b0m1a6b0f6e8" 'jiekoudeKeyzhifangzhibeifeifashiyong jiekouyinggaibaochiyizhi

Dim XmlClassObj

Set XmlClassObj = new XmlClass 'chuangjianduixiang

XmlClassObj.LoadXmlFromString("<?xml version=""1.0"" encoding=""gb2312""?><root/>") 'yongxmlzifutianchongXMLDOCduixiangyonglaifasongxml

XmlClassObj.URL = "http://www.shouji138.com/aspnet2/FileMD5.aspx" 'shezhixiangyingdeurlzheliyinggaigaichengnidewangzhi

Rem xmlgeshi

Rem "<?xml version="1.0" encoding="gb2312"?>

Rem <root>

Rem <sysno></sysno>

Rem <apiaction></apiaction>

Rem <filename></filename>

Rem </root>

XmlClassObj.NodeValue "sysno",Apisysno,0,False 'jiekoudeKeyzhifangzhibeifeifashiyong

XmlClassObj.NodeValue "apiaction","createfilemd5",0,False 'jiekoudexiangyingdongzuoyongyudingyiyigejiekouyongyuduozhongyongtu

XmlClassObj.NodeValue "filename",filename,0,False 'wenjianlujinghewenjianmingyongxiangduilujing

'XmlClassObj.SaveSendXmlDataToFile() 'jiangfasongdexmlshujukubaocunrutxtwenjianyongyutiaoshizhiyong

XmlClassObj.SendHttpData() 'fasongxmlshuju

'XmlClassObj.SaveGetXmlDataToFile() 'baocunjieshoudaodexmlshuju

Rem chulijieguo

Dim message,status

status = XmlClassObj.GetSingleNode("//status") 'xianshizhuangtairuguoweiOKzebiaoshichenggongfouzeyoucuowufasheng

message = XmlClassObj.GetSingleNode("//message") 'xianshiqudaodeMD5zhiruguostatusbuweiOKzemessageweicuowuxinxi

Set XmlClassObj = Nothing

If status = "OK" Then

GetFileMD5 = message

Else

GetFileMD5 = ""

End If

End Function

%>

test.asp

<!--#Include File="filemd5fun.asp"-->

<%

Response.Write "web.configdemd5zhishi:" & GetFileMD5("web.config") & "<br />"

Response.Write "files/logo-yy.gifdemd5zhishi:" & GetFileMD5("files/logo-yy.gif") & "<br />"

Response.Write "xmlcls.aspdemd5zhishi:" & GetFileMD5("xmlcls.asp") & "<br />"

%>

.netduandaima

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.Replace("-", "");

return resule;

}

catch (Exception e)

{

return e.Message;

}

}

}

}

FileMD5.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileMD5.aspx.cs" Inherits="Winsteps.FileMD5.FileMD5" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>shoujizhutiwang:http://www.shouji138.com</title>

</head>

<body>

<form id="form1" runat="server">

<div>

</div>

</form>

</body>

</html>

FileMD5.aspx.cs

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Xml;

using System.Configuration;

namespace Winsteps.FileMD5

{

public partial class FileMD5 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

string sysno = "11111";

string status = "False";

string message = "weizhidingdecuowu";

string net2sysno = ConfigurationManager.AppSettings["sysno"];

XmlDocument doc = new XmlDocument();

try

{

doc.Load(Request.InputStream);

sysno = doc.SelectSingleNode("//sysno").InnerText.Trim();

if (net2sysno != sysno)

{

message = "feifashiyong";

}

else

{

string filename = Server.MapPath(doc.SelectSingleNode("//filename").InnerText.Trim());

message = MD5.md5_hash(filename);

status = "OK";

}

}

catch(Exception ex)

{

message = ex.Message;

}

finally

{

if (doc != null)

doc = null;

}

Response.Clear(); //qingchuhtmlzifu

Response.ContentType = "text/xml";

Response.Charset = "GB2312";//ruguoxmlzifuchuanzhongbaohanzhongwen

Response.Write("<?xml version=\"1.0\" encoding=\"GB2312\"?>");

Response.Write("<root>");

Response.Write(" <status>" + status + "</status>");

Response.Write(" <message>" + message + "</message>");

Response.Write("</root>");

Response.End();

}

}

}

Web.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<appSettings>

<add key="sysno" value="k8n6g2b0m1a6b0f6e8"></add>

</appSettings>

<system.web>

<httpRuntime executionTimeout="3600" maxRequestLength="1048576"/>

<compilation debug="true" defaultLanguage="c#" />

<customErrors mode="Off" />

<identity impersonate="true"/>

<authentication mode="Forms">

<forms name="forums" path="/" loginUrl="Login.aspx" protection="All" timeout="40">

</forms>

</authentication>

<pages validateRequest="false"></pages>

<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" uiCulture="zh-CN"/>

</system.web>

</configuration>

web.configdesysnoyaogenfilemd5fun.asplimiandeApisysnobaochiyizhijutiyingyongshiyinggaiyaobazhegekeygaichengnizijidezhilaibaozhenganquan

yanshidizhi:http://www.shouji138.com/aspnet2/filemd5.asp

daimasuiranchangdanshiyuanlijiandanaspfasongxmlshujugeiasp.net(xmlzhongbaohanleyaomd5dewenjianming)->asp.netjieshouxmlduiwenjianjinxingmd5->asp.netjiangjieguotongguoxmlfanhuigeiasp(xmlzhongbaohanlehuoqudaodemd5zhi)->asphuoqufanhuidexmljiexichumd5zhi

yingyongfanwei

1. zailianggexitongzhijianchuansongwenjianshikeyizaichuansongqianjinxingwenjianmd5chuansonghoujinxingwenjianmd5jianchaliangzhishifouxiangdengruguoxiangdengzebiaoshizaichuansongguochengzhongmeiyoubeixiugai

2. zuoshangchuanxitongzhongruguoyaoqiubunengshangchuantongwenjiandehuakeyizaishangchuanzhihoudewenjianjinxingmd5cunrushujukuzhongzheyangxiacishangchuantongyangwenjianzemd5huixiangtongjujueshangchuan

3. zaisousuoyinqingxunleibenb2bruanjianzhongduiwenjianmd5juyouxiangtongmd5dewenjianbeirenweishixiangtongwenjianerbuguanwenjianmingshifouxiangtongkeyicongduogeyuanlaifenxiangwenjian

4. qitayingyong

erasptongguoCOMzujianshixianmd5(xuyaozaifuwuqishangzhucezujian)

zhuceyigeaspdewenjianmd5zujianxiazaidizhihttp://www.shouji138.com/aspnet2/files/aspmd5.rar

ranhoujiangPARmf.dllwenjiankaobeidaofuwuqidec:\WINDOWS\system32muluyunxingregsvr32 parmf.dlljinxingzhucechongqiIIS

tiaoyongdaima

<%

Set DelphiASPObj = Server.CreateObject("PARmf.md5file")

DelphiASPObj.in_path=Server.Mappath("Web.config") 'wenjianlujing

Response.Write "web.configdemd5zhishi:" & DelphiASPObj.get_path_md5 & "<br />"

Set DelphiASPObj=nothing

%>

sanliangzhongfangshihuoquwenjianmd5deduibi

diyizhongfangfatongguoyuasp.netchengxujiaohuxmlshujulaidedaowenjiandemd5xuyaofuwuqizhichiasp.netyibandexunizhujidoutigongasp.nethuanjingdanshijiagegaodian

dierzhongfangfatongguozhuceCOMzujianshixianxuyaoyoufuwuqidequanxianduiyuyongyoufuwuqidebijiaoheshi

lingwaidiyizhongfangshidezhezhongjiaohufangfa使shideaspjuyougengdadelinghuoxingkeyiyingyongzai2taibutongdefuwuqishangmianjinxingshujujiaohuke广guangfanyingyongyugezhongyigoupingtai

sixiazaidizhi

qingdaooudexiaozhanshoujizhutiwangchakanyanshihexiazaichengxubao

yanshidizhihttp://www.shouji138.com/aspnet2/filemd5.asp

chengxuxiazaidabaoxiazaihttp://www.shouji138.com/aspnet2/files/FileMD5.rar

aspdewenjianmd5zujianhttp://www.shouji138.com/aspnet2/files/aspmd5.rar

原文
 
特别声明:以上内容(如有图片或视频亦包括在内)为网络用户发布,本站仅提供信息存储服务。
 
网上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数据的发送、接收类》,可以上我的百度空间看:[url=http://hi.baidu.com/manbutianmi/blog/item/dec182fc6db36587b801a0f6.html]http://hi.baidu.com/manbutianmi/blog/item/dec182fc6db36587b801a0f6.html[/url],讲的是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" Response.CharSet = "gb2312" Response.Expires = 0 Response.Write "<?xml version=""1.0"" encoding=""gb2312""?>"&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 "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine Response.Write m_GetXmlDoc.documentElement.XML Else Response.Write "<?xml version=""1.0"" encoding=""gb2312""?><root></root>" 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 & "<?xml version=""1.0"" encoding=""gb2312""?>" & 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 & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine str = str & m_GetXmlDoc.documentElement.XML Else str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>" 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部分结束 ''''''''''''''''''接收xml部分开始 '-------------------------------------------------- '接收XML包,错误信息通过Message对象获取 '-------------------------------------------------- Public Function AcceptHttpData() Dim XMLdom Set XMLdom = Server.CreateObject("Microsoft.XMLDOM") XMLdom.Async = False XMLdom.Load(Request) If XMLdom.parseError.errorCode <> 0 Then MessageCode = "不能正确接收数据" & "Descript_ion: " & XMLdom.parseError.reason & "<br>Line: " & XMLdom.parseError.Line Set m_XmlDocAccept = Null Else Set m_XmlDocAccept = XMLdom End If End Function '-------------------------------------------------- '返回接收XML包节点信息 'XmlClassObj.GetSingleNode("//msg") '-------------------------------------------------- Public Function AcceptSingleNode(nodestring) If IsObject(m_XmlDocAccept) Then AcceptSingleNode = m_XmlDocAccept.documentElement.selectSingleNode(nodestring).text Else AcceptSingleNode = "" End If End Function '-------------------------------------------------- '打印接收端接收到的XML数据 '-------------------------------------------------- Public Sub PrintAcceptXmlData() Response.Clear Response.ContentType = "text/xml" Response.CharSet = "gb2312" Response.Expires = 0 If IsObject(m_XmlDocAccept) Then Response.Write "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine Response.Write m_XmlDocAccept.documentElement.XML Else Response.Write "<?xml version=""1.0"" encoding=""gb2312""?><root></root>" End If End Sub Rem 保存接收的XML包数据到文件,文件名为acceptxml_日期.txt Public Sub SaveAcceptXmlDataToFile() Dim filename,str filename = "acceptxml_" & DateValue(now) & ".txt" str = "" str = str & ""& Now() & vbNewLine str = str & "---------------------------------------------"& vbNewLine If IsObject(m_XmlDocAccept) Then str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine str = str & m_XmlDocAccept.documentElement.XML Else str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>" End If str = str & vbNewLine str = str & "---------------------------------------------"& vbNewLine str = str & vbNewLine & vbNewLine & vbNewLine WriteStringToFile filename,str End Sub ''''''''''''''''''接收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 <!--#Include File="xmlcls.asp"--> <% Rem 取得文件的md5,参数为文件名 Function GetFileMD5(filename) Const Apisysno = "k8n6g2b0m1a6b0f6e8" '接口的Key值,防止被非法适用 接口应该保持一致 Dim XmlClassObj Set XmlClassObj = new XmlClass '创建对象 XmlClassObj.LoadXmlFromString("<?xml version=""1.0"" encoding=""gb2312""?><root/>") '用xml字符填充XMLDOC对象,用来发送xml XmlClassObj.URL = "[url=http://www.shouji138.com/aspnet2/FileMD5.aspx]http://www.shouji138.com/aspnet2/FileMD5.aspx[/url]" '设置响应的url,这里应该改成你的网址 Rem xml格式 Rem "<?xml version="1.0" encoding="gb2312"?> Rem <root> Rem <sysno></sysno> Rem <apiaction></apiaction> Rem <filename></filename> Rem </root> XmlClassObj.NodeValue "sysno",Apisysno,0,False '接口的Key值,防止被非法适用 XmlClassObj.NodeValue "apiaction","createfilemd5",0,False '接口的响应动作,用于定义一个接口用于多种用途 XmlClassObj.NodeValue "filename",filename,0,False '文件路径和文件名,用相对路径 'XmlClassObj.SaveSendXmlDataToFile() '将发送的xml数据库包存入txt文件,用于调试之用 XmlClassObj.SendHttpData() '发送xml数据 'XmlClassObj.SaveGetXmlDataToFile() '保存接收到的xml数据 Rem 处理结果 Dim message,status status = XmlClassObj.GetSingleNode("//status") '显示状态,如果为OK则表示成功,否则有错误发生 message = XmlClassObj.GetSingleNode("//message") '显示取到的MD5值,如果status不为OK,则message为错误信息 Set XmlClassObj = Nothing If status = "OK" Then GetFileMD5 = message Else GetFileMD5 = "" End If End Function %> test.asp <!--#Include File="filemd5fun.asp"--> <% Response.Write "web.config的md5值是:" & GetFileMD5("web.config") & "<br />" Response.Write "files/logo-yy.gif的md5值是:" & GetFileMD5("files/logo-yy.gif") & "<br />" Response.Write "xmlcls.asp的md5值是:" & GetFileMD5("xmlcls.asp") & "<br />" %> .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.Replace("-", ""); return resule; } catch (Exception e) { return e.Message; } } } } FileMD5.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileMD5.aspx.cs" Inherits="Winsteps.FileMD5.FileMD5" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]"> <html xmlns="[url=http://www.w3.org/1999/xhtml]http://www.w3.org/1999/xhtml[/url]" > <head runat="server"> <title>手机主题网:http://www.shouji138.com</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html> FileMD5.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Xml; using System.Configuration; namespace Winsteps.FileMD5 { public partial class FileMD5 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string sysno = "11111"; string status = "False"; string message = "未指定的错误"; string net2sysno = ConfigurationManager.AppSettings["sysno"]; XmlDocument doc = new XmlDocument(); try { doc.Load(Request.InputStream); sysno = doc.SelectSingleNode("//sysno").InnerText.Trim(); if (net2sysno != sysno) { message = "非法适用!"; } else { string filename = Server.MapPath(doc.SelectSingleNode("//filename").InnerText.Trim()); message = MD5.md5_hash(filename); status = "OK"; } } catch(Exception ex) { message = ex.Message; } finally { if (doc != null) doc = null; } Response.Clear(); //清楚html字符 Response.ContentType = "text/xml"; Response.Charset = "GB2312";//如果xml字符串中包含中文 Response.Write("<?xml version=\"1.0\" encoding=\"GB2312\"?>"); Response.Write("<root>"); Response.Write(" <status>" + status + "</status>"); Response.Write(" <message>" + message + "</message>"); Response.Write("</root>"); Response.End(); } } } Web.config <?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="sysno" value="k8n6g2b0m1a6b0f6e8"></add> </appSettings> <system.web> <httpRuntime executionTimeout="3600" maxRequestLength="1048576"/> <compilation debug="true" defaultLanguage="c#" /> <customErrors mode="Off" /> <identity impersonate="true"/> <authentication mode="Forms"> <forms name="forums" path="/" loginUrl="Login.aspx" protection="All" timeout="40"> </forms> </authentication> <pages validateRequest="false"></pages> <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" uiCulture="zh-CN"/> </system.web> </configuration> web.config的sysno要跟filemd5fun.asp里面的Apisysno保持一致,具体应用时应该要把这个key改成你自己的值来保证安全。 演示地址:http://www.shouji138.com/aspnet2/filemd5.asp 代码虽然长,但是原理简单,asp发送xml数据给asp.net(xml中包含了要md5的文件名)->asp.net接收xml对文件进行md5->asp.net将结果通过xml返回给asp(xml中包含了获取到的md5值)->asp获取返回的xml,解析出md5值。 应用范围: 1. 在两个系统之间传送文件时,可以在传送前进行文件md5,传送后进行文件md5,检查两值是否相等,如果相等则表示在传送过程中没有被修改。 2. 做上传系统中,如果要求不能上传同文件的话,可以在上传之后的文件进行md5存入数据库中,这样下次上传同样文件,则md5会相同,拒绝上传。 3. 在搜索引擎、迅雷本b2b软件中,对文件md5,具有相同md5的文件被认为是相同文件,而不管文件名是否相同,可以从多个源来分享文件。 4. 其他应用。。。。。 二、asp通过COM组件实现md5(需要在服务器上注册组件) 注册一个asp的文件md5组件,下载地址:[url=http://www.shouji138.com/aspnet2/files/aspmd5.rar]http://www.shouji138.com/aspnet2/files/aspmd5.rar[/url] 然后将PARmf.dll文件拷贝到服务器的c:\WINDOWS\system32目录,运行regsvr32 parmf.dll进行注册,重启IIS。 调用代码: <% Set DelphiASPObj = Server.CreateObject("PARmf.md5file") DelphiASPObj.in_path=Server.Mappath("Web.config") '文件路径 Response.Write "web.config的md5值是:" & DelphiASPObj.get_path_md5 & "<br />" Set DelphiASPObj=nothing %> 三、两种方式获取文件md5的对比 第一种方法通过与asp.net程序交互xml数据来得到文件的md5,需要服务器支持asp.net,一般的虚拟主机都提供asp.net环境,但是价格高点; 第二种方法通过注册COM组件实现,需要有服务器的权限,对于拥有服务器的比较合适。 另外第一种方式的这种交互方法使得asp具有更大的灵活性,可以应用在2台不同的服务器上面进行数据交互,可广泛应用于各种异构平台。 四、下载地址 请到偶的小站,手机主题网查看演示和下载程序包 演示地址:[url=http://www.shouji138.com/aspnet2/filemd5.asp]http://www.shouji138.com/aspnet2/filemd5.asp[/url] 程序下载打包下载:[url=http://www.shouji138.com/aspnet2/files/FileMD5.rar]http://www.shouji138.com/aspnet2/files/FileMD5.rar[/url] asp的文件md5组件:[url=http://www.shouji138.com/aspnet2/files/aspmd5.rar]http://www.shouji138.com/aspnet2/files/aspmd5.rar[/url]
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有