มี MD5 จำนวนมากสำหรับอักขระที่เข้ารหัส ASP บนอินเทอร์เน็ต และพบได้บ่อยมาก แต่ MD5 สำหรับไฟล์นั้นหายากมากจริงๆ เนื่องจากข้อจำกัดของภาษา ASP เอง เรารู้ว่า md5 ของสตริงสามารถเข้ารหัสข้อความธรรมดาอย่างถาวรเพื่อให้มั่นใจในความปลอดภัยของการจัดเก็บหรือการส่งข้อมูล ในทำนองเดียวกัน การเข้ารหัส md5 ของไฟล์ยังใช้เพื่อให้แน่ใจว่าไฟล์เหล่านั้นจะไม่ได้รับการแก้ไขและตรวจสอบระหว่างการส่งข้อมูลผ่านเครือข่าย การใช้งานอีกอย่างหนึ่งคือในไซต์ส่วนตัว: ช่วยให้มั่นใจได้ว่ารูปภาพหรือไฟล์ที่อัพโหลดไม่ซ้ำกัน หลักการคือหลังจากอัพโหลดขึ้นเซิร์ฟเวอร์แล้ว ค่า md5 ของไฟล์ที่อัพโหลดจะถูกบันทึกลงในฐานข้อมูลพร้อมกัน ด้วยวิธีนี้ ครั้งต่อไปที่ไฟล์เดียวกันถูกอัพโหลด เราสามารถสืบค้นฐานข้อมูลเพื่อดูว่าเป็นหรือไม่ ไฟล์เดียวกัน หากค่า md5 เท่ากัน เราจะถือว่ามีค่าเท่ากัน สำหรับไฟล์ ค่า md5 จะเป็น "บัตรประจำตัว" ของไฟล์ สำหรับรูปภาพบน Baidu และคลิกที่รูปภาพบางครั้ง "คุณสามารถคลิกที่ลิงค์ต่อไปนี้เพื่อดูรูปภาพนี้: XXX URL" หลักการก็เหมือนกัน md5 ไฟล์
โดยไม่ต้องกังวลใจอีกต่อไป มาเริ่มกันเลย
1. asp เรียกโปรแกรม .Net ผ่านโหมดโต้ตอบ xml เพื่อใช้ไฟล์ md5
เนื่องจากข้อจำกัดของภาษาของตัวเอง asp จึงไม่สามารถใช้ md5 ของไฟล์ได้ แต่ .net สามารถทำได้จริงหรือไม่ที่จะทำ md5 กับไฟล์ผ่าน .net แล้วส่งข้อมูลไปให้ asp เพื่อรับมัน md5 ของ asp สามารถทำได้หรือไม่ สิ่งนี้เกี่ยวข้องกับการโต้ตอบระหว่างโปรแกรม ASP และ .NET ฉันเคยเขียนคลาส ASP มาก่อน: "คลาสการส่งและรับข้อมูล XML ของ ASP" คุณสามารถดูได้บนพื้นที่ Baidu ของฉัน: http://hi.baidu.com /manbutianmi /blog/item/dec182fc6db36587b801a0f6.html เป็นเรื่องเกี่ยวกับการประมวลผล asp ของการส่งและรับข้อมูล xml และสามารถใช้สำหรับการสื่อสารระหว่างอินเทอร์เฟซ API ระหว่างระบบที่ต่างกันต่างๆ บทความนี้เกิดขึ้นเป็นการประยุกต์ใช้คลาสนี้ รหัสจะเป็นดังนี้:
รหัสด้าน asp
xmlcls.asp
-
Rem จัดการการส่งและรับคลาสของข้อมูล xml
'------------------------------------------------ -
'ข้อมูลลิขสิทธิ์นี้จะต้องถูกเก็บรักษาไว้เมื่อมีการพิมพ์ซ้ำ
'ผู้เขียน: วอล์คแมน
'เว็บไซต์: เครือข่ายธีมมือถือ: http://www.shouji138.com
'เวอร์ชัน: เวอร์ชัน 1.0
'------------------------------------------------ -
ClassXmlClass
นิยามตัวแปร Rem
XmlDoc ส่วนตัว, XmlHttp
รหัสข้อความส่วนตัว, SysKey, XmlPath
m_GetXmlDoc,m_url ส่วนตัว
m_XmlDocAccept
Rem
ส่วนตัว
Class_Initialize ส่วนตัว ()
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
รหัสข้อความ = ""
XmlPath = ""
ตั้งค่า XmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0")
XmlDoc.ASYNC = เท็จ
จบหมวดย่อย
เรมทำลายวัตถุ
Class_Terminate ส่วนตัวย่อย ()
ถ้า IsObject(XmlDoc) ให้ตั้งค่า XmlDoc = Nothing
ถ้า IsObject(m_XmlDocAccept) ให้ตั้งค่า m_XmlDocAccept = Nothing
ถ้า IsObject(m_GetXmlDoc) ให้ตั้งค่า m_GetXmlDoc = Nothing
จบหมวดย่อย
'การกำหนดคุณลักษณะสาธารณะเริ่มต้น --------------------------
ข้อความแสดงข้อผิดพลาด Rem
ทรัพย์สินสาธารณะรับข้อความ ()
ข้อความ = รหัสข้อความ
สิ้นสุดคุณสมบัติ
Rem ที่อยู่ที่จะส่ง xml ไป
ทรัพย์สินสาธารณะให้ URL(str)
m_url = STR
สิ้นสุดคุณสมบัติ
'สิ้นสุดคำจำกัดความคุณลักษณะสาธารณะ--------------------------
'กระบวนการส่วนตัวและวิธีการเริ่มต้น ---------------------------
โหลด xml อีกครั้ง
LoadXmlData ย่อยส่วนตัว ()
ถ้า XmlPath <> "" จากนั้น
ถ้าไม่ใช่ XmlDoc.Load(XmlPath) แล้ว
XmlDoc.LoadXml "<?xml version=""1.0"" encoding=""gb2312""?><root/>"
สิ้นสุดถ้า
อื่น
XmlDoc.LoadXml "<?xml version=""1.0"" encoding=""gb2312""?><root/>"
สิ้นสุดถ้า
สิ้นสุด
การแปลงอักขระ Sub Rem
ฟังก์ชั่นส่วนตัว AnsiToUnicode (ByVal str)
หรี่ i, j, c, i1, i2, u, fs, f, p
AnsiToUnicode = ""
พี = ""
สำหรับ i = 1 ถึง Len(str)
c = กลาง(str, i, 1)
เจ = AscW(ค)
ถ้า j < 0 แล้ว
เจ = เจ + 65536
สิ้นสุดถ้า
ถ้า j >= 0 และ j <= 128 แล้ว
ถ้า p = "c" แล้ว
AnsiToUnicode = " " & AnsiToUnicode
พี = "อี"
สิ้นสุดถ้า
AnsiToUnicode = AnsiToUnicode & ค
อื่น
ถ้า p = "e" แล้ว
AnsiToUnicode = AnsiToUnicode & " "
พี = "ค"
สิ้นสุดถ้า
AnsiToUnicode = AnsiToUnicode & ("&#" & j & ";")
สิ้นสุดถ้า
ต่อไป
ฟังก์ชันสิ้นสุด
การแปลงอักขระ Rem
ฟังก์ชั่นส่วนตัว strAnsi2Unicode (asContents)
ดิม เลน1,ไอ,วาร์ชาร์,วาราสค์
strAnsi2Unicode = ""
len1=LenB(ตามเนื้อหา)
ถ้า len1=0 ให้ออกจากฟังก์ชัน
สำหรับ i=1 ถึง len1
varchar=MidB(asContents,i,1)
varasc=AscB(วาร์ชาร์)
ถ้า varasc > 127 แล้ว
ถ้า MidB(asContents,i+1,1)<>"" จากนั้น
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
สิ้นสุดถ้า
ฉัน=ฉัน+1
อื่น
strAnsi2Unicode = strAnsi2Unicode & Chr(วาราสค์)
สิ้นสุดถ้า
ต่อไป
ฟังก์ชันสิ้นสุด
Rem ผนวกอักขระเข้ากับไฟล์
WriteStringToFile ส่วนตัวย่อย (ชื่อไฟล์, str)
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ติ่มซำ fs,ts
ตั้งค่า fs= createobject("script_ing.filesystemobject")
ถ้าไม่ใช่ IsObject(fs) ให้ออกจาก Sub
ตั้งค่า ts=fs.OpenTextFile(Server.MapPath(ชื่อไฟล์),8,True)
ts.writeline(str)
ts.ปิด
ตั้งค่า ts=ไม่มีอะไร
ตั้งค่า fs=ไม่มีอะไร
จบหมวดย่อย
'กระบวนการส่วนตัวและวิธีการสิ้นสุด ---------------------------
'เริ่มวิธีสาธารณะ--www.devdao.com------------------------
'''''''''''' ส่งส่วน xml เพื่อเริ่มต้น
Rem เติมวัตถุ XmlDoc จากไฟล์ xml ภายนอก
LoadXmlFromFile ย่อยสาธารณะ (เส้นทาง)
XmlPath = Server.MapPath (เส้นทาง)
LoadXmlData()
จบหมวดย่อย
Rem เติมวัตถุ XmlDoc ด้วยสตริง
LoadXmlFromString ย่อยสาธารณะ (str)
XmlDoc.LoadXml str
จบหมวดย่อย
Rem ตั้งค่าพารามิเตอร์ของโหนด เช่น NodeValue "appID",AppID,1,False
'------------------------------------------------ -
'พารามิเตอร์:
'ชื่อโหนด NodeName
'ค่า NodeText
'ประเภทการบันทึก NodeType [text=0,cdata=1]
'blnEncode ว่าจะเข้ารหัส [true, false] หรือไม่
'------------------------------------------------ -
NodeValue ย่อยสาธารณะ (Byval NodeName, Byval NodeText, Byval NodeType, Byval blnEncode)
Dim ChildNode สร้าง CDATASection
NodeName = Lcase (ชื่อโหนด)
ถ้า XmlDoc.documentElement.selectSingleNode(NodeName) ไม่มีอะไรเลย
ตั้งค่า ChildNode = XmlDoc.documentElement.appendChild(XmlDoc.createNode(1,NodeName,""))
อื่น
ตั้งค่า ChildNode = XmlDoc.documentElement.selectSingleNode (NodeName)
สิ้นสุดถ้า
ถ้า blnEncode = True แล้ว
NodeText = AnsiToUnicode(NodeText)
สิ้นสุดถ้า
ถ้า NodeType = 1 แล้ว
ChildNode.Text = ""
ตั้งค่า CreateCDATASection = XmlDoc.createCDATASection(แทนที่(NodeText,"]]>","]]>"))
ChildNode.appendChild (createCDATASection)
อื่น
ChildNode.Text = NodeText
สิ้นสุดถ้า
จบหมวดย่อย
'------------------------------------------------ -
'รับค่าของโหนดในแพ็คเก็ต XML ที่ส่ง
'พารามิเตอร์:
'ชื่อโหนด Str
'------------------------------------------------ -
ทรัพย์สินสาธารณะ GetXmlNode (ByvalStr)
ถ้า XmlDoc.documentElement.selectSingleNode(Str) ไม่มีอะไรแล้ว
XmlNode = "ว่าง"
อื่น
XmlNode = XmlDoc.documentElement.selectSingleNode(Str).text
สิ้นสุดถ้า
สิ้นสุดคุณสมบัติ
'-------------------------------------------------- --- ---
'รับวัตถุข้อมูล XML ที่ส่งคืน
'ตัวอย่าง:
'เมื่อ GetXmlData ไม่ใช่ NULL GetXmlData จะเป็นวัตถุ XML
'------------------------------------------------ -
ทรัพย์สินสาธารณะรับ GetXmlData()
ตั้งค่า GetXmlData = m_GetXmlDoc
สิ้นสุดคุณสมบัติ
'------------------------------------------------ -
'ส่งแพ็คเกจ xml
'------------------------------------------------ -
สาธารณะย่อย SendHttpData()
หรี่ฉัน, GetXmlDoc, LoadAppid
ตั้งค่า Xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
ตั้งค่า GetXmlDoc = Server.CreateObject("msxml2.FreeThreadedDOMDocument.3.0") ' ส่งกลับแพ็คเกจ xml
XmlHttp.Open "POST", m_url, false
XmlHttp.SetRequestHeader "ประเภทเนื้อหา", "ข้อความ/xml"
XmlHttp ส่ง XmlDoc
'การตอบสนองเขียน strAnsi2Unicode (xmlhttp.responseBody)
ถ้า GetXmlDoc.load(XmlHttp.responseXML) แล้ว
ตั้งค่า m_GetXmlDoc = GetXmlDoc
อื่น
MessageCode = "เกิดข้อผิดพลาดในการขอข้อมูล!"
ออกจากย่อย
สิ้นสุดถ้า
ตั้งค่า GetXmlDoc = ไม่มีเลย
ตั้ง XmlHttp = ไม่มีเลย
จบหมวดย่อย
'------------------------------------------------ -
'พิมพ์ส่งคำขอข้อมูล XML
'------------------------------------------------ -
PrintSendXmlData() สาธารณะย่อย
การตอบสนองชัดเจน
Response.ContentType = "ข้อความ/xml"
Response.CharSet = "gb2312"
การตอบกลับหมดอายุ = 0
Response.Write "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine
Response.Write XmlDoc.documentElement.XML
จบหมวดย่อย
'------------------------------------------------ -
'พิมพ์ข้อมูล XML ที่ส่งคืน
'------------------------------------------------ -
PrintGetXmlData() ย่อยสาธารณะ
การตอบสนองชัดเจน
Response.ContentType = "ข้อความ/xml"
Response.CharSet = "gb2312"
การตอบกลับหมดอายุ = 0
ถ้า IsObject(m_GetXmlDoc) แล้ว
Response.Write "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine
Response.เขียน m_GetXmlDoc.documentElement.XML
อื่น
การตอบสนองเขียน "<?xml version=""1.0"" encoding=""gb2312""?><root></root>"
สิ้นสุดถ้า
จบหมวดย่อย
Rem บันทึกข้อมูล xml คำขอส่งลงในไฟล์ชื่อ sendxml_date.txt
สาธารณะย่อย SaveSendXmlDataToFile ()
ชื่อไฟล์ Dim,str
ชื่อไฟล์ = "sendxml_" & DateValue (ตอนนี้) & ".txt"
STR = ""
str = str & ""& ตอนนี้() & 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,str
จบหมวดย่อย
Rem บันทึกข้อมูล XML ที่ส่งคืนไปยังไฟล์ชื่อ getxml_date.txt
สาธารณะย่อย SaveGetXmlDataToFile()
ชื่อไฟล์ Dim,str
ชื่อไฟล์ = "getxml_" & DateValue (ตอนนี้) & ".txt"
STR = ""
str = str & ""& ตอนนี้() & vbNewLine
str = str & "------------------------------------------------- --- "& vbNewLine
ถ้า IsObject(m_GetXmlDoc) แล้ว
str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine
str = str & m_GetXmlDoc.documentElement.XML
อื่น
str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>"
สิ้นสุดถ้า
str = str & vbNewLine
str = str & "------------------------------------------------- --- "& vbNewLine
str = str & vbNewLine & vbNewLine & vbNewLine
ชื่อไฟล์ WriteStringToFile,str
จบหมวดย่อย
'------------------------------------------------ -
'รับข้อมูลโหนดของ xml ที่ส่งคืน
'XmlClassObj.GetSingleNode("//msg")
'------------------------------------------------ -
ฟังก์ชั่นสาธารณะ GetSingleNode (nodestring)
ถ้า IsObject(m_GetXmlDoc) แล้ว
GetSingleNode = m_GetXmlDoc.documentElement.selectSingleNode(nodestring) ข้อความ
อื่น
GetSingleNode = ""
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
''''''''''''''''''สิ้นสุดการส่งส่วน xml
''''''''''''''''''ส่วน xml ที่ได้รับเริ่มต้นขึ้น
'------------------------------------------------ -
'รับแพ็คเกจ XML ข้อมูลข้อผิดพลาดได้รับผ่านวัตถุข้อความ
'------------------------------------------------ -
ฟังก์ชั่นสาธารณะ AcceptHttpData()
หรี่ XMLdom
ตั้งค่า XMLdom = Server.CreateObject("Microsoft.XMLDOM")
XMLdom.Async = เท็จ
XMLdom.Load(คำขอ)
ถ้า XMLdom.parseError.errorCode <> 0 แล้ว
MessageCode = "ไม่สามารถรับข้อมูลได้อย่างถูกต้อง" & "Descript_ion: " & XMLdom.parseError.reason & "<br>Line: " & XMLdom.parseError.Line
ตั้งค่า m_XmlDocAccept = Null
อื่น
ตั้งค่า m_XmlDocAccept = XMLdom
สิ้นสุดถ้า
สิ้นสุดฟังก์ชัน
'-------------------------------------------------- --- ---
'กลับไปรับข้อมูลโหนดแพ็คเกจ XML
'XmlClassObj.GetSingleNode("//msg")
'------------------------------------------------ -
ฟังก์ชั่นสาธารณะ AcceptSingleNode (nodestring)
ถ้า IsObject(m_XmlDocAccept) แล้ว
AcceptSingleNode = m_XmlDocAccept.documentElement.selectSingleNode(nodestring).ข้อความ
อื่น
ยอมรับ SingleNode = ""
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
'------------------------------------------------ -
'พิมพ์ข้อมูล XML ที่ได้รับจากส่วนรับ
'------------------------------------------------ -
PrintAcceptXmlData() สาธารณะย่อย
การตอบสนองชัดเจน
Response.ContentType = "ข้อความ/xml"
Response.CharSet = "gb2312"
การตอบกลับหมดอายุ = 0
ถ้า IsObject(m_XmlDocAccept) แล้ว
Response.Write "<?xml version=""1.0"" encoding=""gb2312""?>"&vbNewLine
การตอบสนองเขียน m_XmlDocAccept.documentElement.XML
อื่น
การตอบสนองเขียน "<?xml version=""1.0"" encoding=""gb2312""?><root></root>"
สิ้นสุดถ้า
จบหมวดย่อย
Rem บันทึกข้อมูลแพ็กเก็ต XML ที่ได้รับลงในไฟล์ชื่อ Acceptxml_date.txt
สาธารณะย่อย SaveAcceptXmlDataToFile ()
ชื่อไฟล์ Dim,str
ชื่อไฟล์ = "acceptxml_" & DateValue (ตอนนี้) & ".txt"
STR = ""
str = str & ""& ตอนนี้() & vbNewLine
str = str & "------------------------------------------------- --- "& vbNewLine
ถ้า IsObject(m_XmlDocAccept) แล้ว
str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine
str = str & m_XmlDocAccept.documentElement.XML
อื่น
str = str & "<?xml version=""1.0"" encoding=""gb2312""?>" & vbNewLine & "<root>" & vbNewLine & "</root>"
สิ้นสุดถ้า
str = str & vbNewLine
str = str & "------------------------------------------------- --- "& vbNewLine
str = str & vbNewLine & vbNewLine & vbNewLine
ชื่อไฟล์ WriteStringToFile,str
จบหมวดย่อย
''''''''''''''''''รับส่วน xml และสิ้นสุด
Rem บันทึกข้อมูลการดีบักลงในไฟล์ชื่อ debugnote_date.txt
สาธารณะย่อย SaveDebugStringToFile (debugstr)
ชื่อไฟล์ Dim,str
ชื่อไฟล์ = "debugnote_" & DateValue (ตอนนี้) & ".txt"
STR = ""
str = str & ""& ตอนนี้() & vbNewLine
str = str & "------------------------------------------------- --- "& vbNewLine
str = str & debugstr & vbNewLine
str = str & "------------------------------------------------- --- "
str = str & vbNewLine & vbNewLine & vbNewLine
ชื่อไฟล์ WriteStringToFile,str
สิ้นสุด Sub
'วิธีการสาธารณะสิ้นสุด --------------------------
จบคลาส
%>
filemd5fun.asp
<!--#รวมไฟล์="xmlcls.asp"-->
-
Rem รับ md5 ของไฟล์ พารามิเตอร์คือชื่อไฟล์
ฟังก์ชัน GetFileMD5(ชื่อไฟล์)
Const Apisysno = "k8n6g2b0m1a6b0f6e8" 'ค่าคีย์ของอินเทอร์เฟซควรสอดคล้องกันเพื่อป้องกันการใช้อินเทอร์เฟซอย่างผิดกฎหมาย
DimXmlClassObj
ตั้งค่า XmlClassObj = XmlClass ใหม่ 'สร้างวัตถุ'
XmlClassObj.LoadXmlFromString("<?xml version=""1.0"" encoding=""gb2312""?><root/>") 'เติมวัตถุ XMLDOC ด้วยอักขระ xml และใช้เพื่อส่ง xml
XmlClassObj.URL = " http://www.shouji138.com/aspnet2/FileMD5.aspx " 'ตั้งค่า URL ตอบกลับ ซึ่งควรเปลี่ยนเป็น URL ของคุณ
รูปแบบ Rem xml
Rem "<?xml version="1.0" encoding="gb2312"?>
เรม <root>
เรม <sysno></sysno>
เรม <apiaction></apiaction>
เรม <ชื่อไฟล์></ชื่อไฟล์>
เรม </root>
XmlClassObj.NodeValue "sysno",Apisysno,0,False 'ค่าคีย์ของอินเทอร์เฟซเพื่อป้องกันแอปพลิเคชันที่ผิดกฎหมาย
XmlClassObj.NodeValue "apiaction", "createfilemd5", 0, False ' การกระทำการตอบสนองของอินเทอร์เฟซ ใช้เพื่อกำหนดอินเทอร์เฟซสำหรับวัตถุประสงค์หลายประการ
XmlClassObj.NodeValue "filename",filename,0,False 'เส้นทางไฟล์และชื่อไฟล์ ใช้
เส้นทางสัมพันธ์'XmlClassObj.SaveSendXmlDataToFile() 'บันทึกแพ็คเกจฐานข้อมูล xml ที่ส่งลงในไฟล์ txt เพื่อวัตถุประสงค์ในการดีบัก
XmlClassObj.SendHttpData() 'ส่งข้อมูล xml
'XmlClassObj.SaveGetXmlDataToFile() 'บันทึกข้อมูล xml ที่ได้รับ
ผลลัพธ์การประมวลผล Rem
ข้อความติ่มซำ สถานะ
status = XmlClassObj.GetSingleNode("//status") 'สถานะการแสดงผล หากเป็นปกติ แสดงว่าสำเร็จ มิฉะนั้นจะเกิดข้อผิดพลาด
message = XmlClassObj.GetSingleNode("//message") 'แสดงค่า MD5 ที่ได้รับ หากสถานะไม่ถูกต้อง ข้อความดังกล่าวจะเป็นข้อความแสดงข้อผิดพลาด
ตั้งค่า XmlClassObj = Nothing
If status = "OK" จากนั้น
GetFileMD5 = ข้อความ
อื่น
GetFileMD5 = ""
สิ้นสุดถ้า
สิ้นสุดฟังก์ชัน
%>
test.asp
<!--#รวมไฟล์="filemd5fun.asp"-->
<%
Response.Write "ค่า md5 ของ web.config คือ:" & GetFileMD5("web.config") & "<br />"
Response.Write "ค่า md5 ของ files/logo-yy.gif คือ:" & GetFileMD5("files/logo-yy.gif") & "<br />"
Response.Write "ค่า md5 ของ xmlcls.asp คือ:" & GetFileMD5("xmlcls.asp") & "<br />"
-
รหัสด้าน .net:
MD5.cs
ใช้ระบบ;
ใช้ System.Collections.Generic;
ใช้ System.Text;
ใช้ System.IO;
เนมสเปซ Winsteps.FileMD5
-
MD5 คลาสสาธารณะ
-
สตริงคงที่สาธารณะ md5_hash (เส้นทางสตริง)
-
พยายาม
-
FileStream get_file = FileStream ใหม่ (เส้นทาง, FileMode.Open, FileAccess.Read, FileShare.Read);
System.Security.Cryptography.MD5CryptoServiceProvider get_md5 = System.Security.Cryptography.MD5CryptoServiceProvider ใหม่ ();
ไบต์ [] hash_byte = get_md5.ComputeHash(get_file);
สตริง resule = System.BitConverter.ToString (hash_byte);
resule = resule.Replace("-", "");
ส่งคืนผลลัพธ์;
-
จับ (ยกเว้น e)
-
กลับอีเมล;
-
-
-
}
FileMD5.aspx
<%@ ภาษาเพจ = "C#" AutoEventWireup = "true" CodeBehind = "FileMD5.aspx.cs" สืบทอด = "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 " >
<หัว runat="เซิร์ฟเวอร์">
<title>เว็บไซต์ธีมมือถือ: http://www.shouji138.com</title>
</หัว>
<ร่างกาย>
<form id="form1" runat="server">
<div>
</div>
</แบบฟอร์ม>
</ร่างกาย>
</html>
FileMD5.aspx.cs
โดยใช้ระบบ;
ใช้ System.Data;
โดยใช้ระบบการกำหนดค่า;
ใช้ System.Collections;
ใช้ System.Web;
โดยใช้ System.Web.Security;
โดยใช้ System.Web.UI;
ใช้ System.Web.UI.WebControls;
ใช้ System.Web.UI.WebControls.WebParts;
ใช้ System.Web.UI.HtmlControls
โดยใช้ System.Xml;
ใช้ System.Configuration;
เนมสเปซ Winsteps.FileMD5
-
FileMD5 คลาสสาธารณะบางส่วน: System.Web.UI.Page
-
โมฆะที่ได้รับการป้องกัน Page_Load (ผู้ส่งวัตถุ EventArgs e)
-
สตริง sysno = "11111";
สถานะสตริง = "เท็จ";
ข้อความสตริง = "ข้อผิดพลาดที่ไม่ระบุ";
สตริง net2sysno = ConfigurationManager.AppSettings ["sysno"];
เอกสาร XmlDocument = XmlDocument ใหม่();
พยายาม
-
doc.Load(คำขอ.InputStream);
sysno = doc.SelectSingleNode("//sysno").InnerText.Trim();
ถ้า (net2sysno != sysno)
-
message = "การสมัครที่ผิดกฎหมาย!";
-
อื่น
-
ชื่อไฟล์สตริง = Server.MapPath(doc.SelectSingleNode("//filename").InnerText.Trim());
ข้อความ = MD5.md5_hash (ชื่อไฟล์);
สถานะ = "ตกลง";
}
}
จับ (ข้อยกเว้นเช่น)
-
ข้อความ = อดีตข้อความ;
-
ในที่สุด
-
ถ้า (doc != null)
doc = โมฆะ;
-
Response.Clear(); //ล้างอักขระ html
Response.ContentType = "ข้อความ/xml";
Response.Charset = "GB2312";//หากสตริง xml มีภาษาจีน
Response.Write("<?xml version="1.0" encoding="GB2312"?>");
Response.Write("<root>");
Response.Write(" <สถานะ>" + สถานะ + "</สถานะ>");
Response.Write(" <ข้อความ>" + ข้อความ + "</ข้อความ>");
Response.Write("</root>");
การตอบสนองสิ้นสุด();
}
-
-
Web.config
<?xml version="1.0" encoding="utf-8"?>
<การกำหนดค่า>
<การตั้งค่าแอป>
<เพิ่มคีย์ =ค่า "sysno" = "k8n6g2b0m1a6b0f6e8"></add>
</การตั้งค่าแอป>
<system.เว็บ>
<httpRuntimeExecutionTimeout="3600" maxRequestLength="1048576"/>
<คอมไพล์ดีบัก = "true" defaultLanguage = "c #" />
<customErrors mode="ปิด" />
<ตัวตนปลอมตัว = "จริง"/>
<โหมดการรับรองความถูกต้อง = "แบบฟอร์ม">
<ชื่อฟอร์ม = "ฟอรั่ม" เส้นทาง = "/" loginUrl = "การป้องกัน Login.aspx" = "ทั้งหมด" หมดเวลา = "40">
</แบบฟอร์ม>
</การรับรองความถูกต้อง>
<เพจ validateRequest="false"></pages>
< globalization requestEncoding = "gb2312" responseEncoding = "gb2312" วัฒนธรรม = "zh-CN" uiCulture = "zh-CN"/>
</system.เว็บ>
</การกำหนดค่า>
sysno ของ web.config ควรสอดคล้องกับ Apisysno ใน filemd5fun.asp ในระหว่างการใช้งานเฉพาะ คุณควรเปลี่ยนคีย์นี้เป็นค่าของคุณเองเพื่อความปลอดภัย
ที่อยู่สาธิต: http://www.shouji138.com/aspnet2/filemd5.asp
แม้ว่าโค้ดจะยาว แต่หลักการก็ง่าย ASP ส่งข้อมูล xml ไปที่ asp.net (xml มีชื่อไฟล์เป็น md5) -> asp.net รับ xml และดำเนินการ md5 กับไฟล์ -> asp.net ส่งกลับ ผลลัพธ์ของ asp ถึง xml (xml มีค่า md5 ที่ได้รับ) -> asp ได้รับ xml ที่ส่งคืนและแยกวิเคราะห์ค่า md5
ขอบเขตการสมัคร:
1. เมื่อทำการโอนไฟล์ระหว่างสองระบบ คุณสามารถดำเนินการไฟล์ md5 ก่อนส่ง และไฟล์ md5 หลังการส่ง เพื่อตรวจสอบว่าค่าทั้งสองเท่ากันหรือไม่ แสดงว่าค่าเหล่านั้นไม่ได้รับการแก้ไขในระหว่างกระบวนการส่ง
2. ในระบบอัพโหลด หากจำเป็นต้องอัพโหลดไฟล์เดียวกัน md5 ของไฟล์ที่อัพโหลดจะถูกเก็บไว้ในฐานข้อมูล ด้วยวิธีนี้ หากไฟล์เดียวกันถูกอัพโหลดในครั้งต่อไป md5 จะเป็น เหมือนกันและการอัปโหลดจะถูกปฏิเสธ
3. ในเครื่องมือค้นหาและซอฟต์แวร์ Xunlei b2b สำหรับไฟล์ md5 ไฟล์ที่มี md5 เหมือนกันจะถือเป็นไฟล์เดียวกัน ไม่ว่าชื่อไฟล์จะเหมือนกันหรือไม่ก็ตาม และสามารถแชร์ไฟล์จากหลายแหล่งได้
4. การใช้งานอื่นๆ - - - -
2. asp ใช้ md5 ผ่านส่วนประกอบ COM (ส่วนประกอบจำเป็นต้องลงทะเบียนบนเซิร์ฟเวอร์)
เพื่อลงทะเบียนส่วนประกอบ md5 ไฟล์ asp ที่อยู่ดาวน์โหลด: DelphiASPObj.in_path=Server.Mappath("Web.config") 'เส้นทางไฟล์
Response.Write "ค่า md5 ของ web.config คือ:" & DelphiASPObj.get_path_md5 & "<br />"
ตั้งค่า DelphiASPObj=nothing
%>
3. การเปรียบเทียบสองวิธีในการรับไฟล์ md5
วิธีแรกคือการรับ md5 ของไฟล์โดยการโต้ตอบกับข้อมูล xml กับโปรแกรม asp.net เซิร์ฟเวอร์จำเป็นต้องรองรับโฮสต์เสมือนทั่วไป สภาพแวดล้อม asp.net แต่ราคาสูงกว่า
วิธีที่สองดำเนินการโดยการลงทะเบียนส่วนประกอบ COM ซึ่งต้องได้รับอนุญาตจากเซิร์ฟเวอร์และเหมาะสำหรับผู้ที่เป็นเจ้าของเซิร์ฟเวอร์มากกว่า
นอกจากนี้ วิธีแรกในการโต้ตอบทำให้ ASP มีความยืดหยุ่นมากขึ้น และสามารถใช้กับเซิร์ฟเวอร์ที่แตกต่างกันสองเครื่องสำหรับการโต้ตอบข้อมูล และสามารถใช้ได้อย่างกว้างขวางบนแพลตฟอร์มที่ต่างกันหลากหลาย
4. สำหรับที่อยู่การดาวน์โหลด โปรดไปที่เว็บไซต์ของฉันและเครือข่ายธีมมือถือเพื่อดูการสาธิตและดาวน์โหลดที่อยู่สาธิตแพ็คเกจโปรแกรม: http://www.shouji138.com/aspnet2/filemd5.asp
ดาวน์โหลดโปรแกรม ดาวน์โหลดแพ็คเกจ: