關(guān)于md5vb.net的信息

關(guān)于vb.net中Socket的問題

我不給你代碼了,我才編了SOCKET的,告訴你原理吧(我的編程經(jīng)驗而已)

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的承德縣網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

SOCKET傳輸文件和接受是有大小限制的,默認是81**來則也就是8K多,你可以改小,但改大我沒試過,然后你必須把文件分成若干份,然后傳過去,然后在接收端組合起來,同時接收端的接受大小要和發(fā)送大小統(tǒng)一。

至于你說的文件名,文件名不屬于文件數(shù)據(jù)中的一部分,它不參與數(shù)據(jù)傳輸?shù)模阒荒茉诮邮斩酥匦赂拿帧?/p>

同時為什么要用上面的方法傳呢,因為VB.NET中的SOCKET有很多問題,我就為此煩過,因為要丟包(理論上TCP不存在),或者粘包,或者斷包,也就是你在接收端獲取文件時數(shù)據(jù)是要出錯的,比如你定長3000B,結(jié)果接收端可能先收到2000B,當接受端接受后,處理會出錯的。

所以SOCKET的標準發(fā)送方法是建立定長的結(jié)構(gòu)體(結(jié)構(gòu)體必須定義為可序列化結(jié)構(gòu)體),最好結(jié)構(gòu)體里面至少包含有 1,文件名,2,本包序號,3,本包數(shù)據(jù),比如每個包大小3040B,文件名占20,序號占20,數(shù)據(jù)占3000,然后發(fā)送出去,接收端每次固定接受3040B,如果接受到的包沒有這么大(比如收到2000),那么繼續(xù)接受(1040),直到達到3040后組合成一個包,在把包分解成結(jié)構(gòu)體,相同的文件名為一個文件,再按照序號按次組合其中的數(shù)據(jù),這就完成了傳輸。這樣的方法還可以同時傳送多個文件,因為結(jié)構(gòu)體里面包含了文件名和序列號,不會錯亂,如果是大文件,請不要接收完畢后(最后一個包的序號可以為-1,或者包里包含總長度,檢查到序號為-1時表示完畢,或者達到總長度后表示完畢)再組合,因為這樣會浪費電腦內(nèi)存,最好的方法是一邊接受數(shù)據(jù),一邊寫入到文件中(收到第一個包時就建立文件,以后每個包的數(shù)據(jù)都往里面寫)。

回答你的問題:

1、經(jīng)過上面的傳輸后,文件是不變化的,MD5檢查都是正常的,不用擔心文件大小有變化(如果有變化,那就是代碼沒編對)

2,、文件名問題,我前面提到了,文件名是不參與傳輸?shù)?,它不屬于?shù)據(jù)中的一部分,比如同一個文件,不管你怎么改名字MD5是不變的。你只能通過把文件名想辦法傳給對方(比如我上面說的結(jié)構(gòu)體方法),讓對方寫入文件時使用。

3,代碼:

還是給你找找吧,等等

不行,我的都很大,很長,你還是在網(wǎng)上找吧,有很多例子,我也是網(wǎng)上學(xué)的。

java MD5 對應(yīng)的C#方法

在vb.net里面,可以這樣算文件的MD5值,你用工具轉(zhuǎn)換過來就有C#的代碼了。

Private?Function?GetFileMD5(fileName?As?String)?As?String

Dim?hashValue?As?Byte()

Dim?sb?As?New?StringBuilder()

Try

Dim?fileStream?As?New?FileStream(fileName,?FileMode.Open,?FileAccess.Read,?FileShare.Read,?4096,?True)

Using?md5?=?New?System.Security.Cryptography.MD5CryptoServiceProvider()

hashValue=?md5.ComputeHash(fileStream)

End?Using

Dim?i?As?Integer?=?0

sb.Capacity?=?hashValue.Length?*?2

While?i??hashValue.Length

sb.Append(hashValue(i).ToString("x2"))

i?+=?1

End?While

Catch?ex?As?Exception

Throw

End?Try

Return?sb.ToString()

End?Function

運行結(jié)果

小文件

系統(tǒng)自帶工具運行結(jié)果

大文件

以上代碼小文件(十幾K)、大文件(幾G)都測試過

求破解md5: 1125c23b25ee31e73769554d8f448244

解密的沒有...

加密的自己做一個吧

3.119 icePub_getMD5

l 函數(shù)原型:

int WINAPI icePub_getMD5(char* pBuf, int buffLen,char *strResult)

輸入:pBuf 待處理的數(shù)據(jù)

nLength 待處理數(shù)據(jù)的長度

輸出:strResult MD5結(jié)果串,32字節(jié)

返回碼:

l VC連接Lib方式聲明

__declspec(dllexport)

int WINAPI icePub_getMD5(char* pBuf, int buffLen,char *strResult);

l 動態(tài)調(diào)用例程

VC sample代碼:

char buff[1024];

char buff2[1024];

strcpy(buff2,"Walk At Familiar Alley, Pursue Concordand's Footfall, Between Front And Back, What Course To Follow?");

typedef int (WINAPI ICEPUB_GETMD5)( char* pBuf, int buffLen,char *strResult);

ICEPUB_GETMD5 *icePub_getMD5 = 0;

HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");

if(hDLLDrv)

{

icePub_getMD5=(ICEPUB_GETMD5 *)GetProcAddress(hDLLDrv,"icePub_getMD5");

}

if(icePub_getMD5)

icePub_getMD5(buff2,strlen(buff2),buff);

if(hDLLDrv)

FreeLibrary(hDLLDrv);

AfxMessageBox(buff);

VB sample 代碼:

Private Declare Function icePub_getMD5 Lib "icePubDll.dll" (ByVal pBuf As String, ByVal buffLen As Integer, ByVal strResult As String) As Integer

Dim a2 As Integer

Dim buff As String

Dim buff2 As String

buff2="Go with This life Loneliness, carried off Day And Night Dreariness, Between Sun And Moon, Tell Words from one's heart Each Other."

buff=Space(1024)

a2=icePub_getMD5(buff2,LenB(buff2),buff)

MsgBox buff

3.121 icePub_getMD5FromFile

l 函數(shù)原型:

int WINAPI icePub_getMD5FromFile(char *strFilePath,char *strResult)

輸入:strFilePath 待MD5的文件名

輸出:strResult MD5結(jié)果串,32字節(jié)

返回碼:

l VC連接Lib方式聲明

__declspec(dllexport)

int WINAPI icePub_getMD5FromFile(char *strFilePath,char *strResult);

l 動態(tài)調(diào)用例程

VC sample代碼:

char buff[1024];

typedef int (WINAPI ICEPUB_GETMD5FROMFILE)(char *strFilePath,char *strResult);

ICEPUB_DESDECRYPTIONSTRING *icePub_getMD5FromFile = 0;

HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");

if(hDLLDrv)

{

icePub_getMD5FromFile=(ICEPUB_DESDECRYPTIONSTRING *)GetProcAddress(hDLLDrv,"icePub_getMD5FromFile");

}

if(icePub_getMD5FromFile)

icePub_getMD5FromFile("D:\\icePubDLL.dll",buff);

if(hDLLDrv)

FreeLibrary(hDLLDrv);

AfxMessageBox(buff);

VB sample 代碼:

Private Declare Function icePub_getMD5FromFile Lib "icePubDll.dll" (ByVal strFilePath As String, ByVal strResult As String) As Integer

Dim a2 As Integer

Dim buff As String

buff=Space(1024)

a2=icePub_getMD5FromFile("D:\icePubDLL.dll",buff)

MsgBox buff

3.120 icePub_getMD5FromString

l 函數(shù)原型:

int WINAPI icePub_getMD5FromString(char *strData,char *strResult)

輸入:strData 待處理的文本串

輸出:strResult MD5結(jié)果串,32字節(jié)

返回碼:

l VC連接Lib方式聲明

__declspec(dllexport)

int WINAPI icePub_getMD5FromString(char *strData,char *strResult);

l 動態(tài)調(diào)用例程

VC sample代碼:

char buff[1024];

char buff2[1024];

strcpy(buff2,"Walk At Familiar Alley, Pursue Concordand's Footfall, Between Front And Back, What Course To Follow?");

typedef int (WINAPI ICEPUB_GETMD5FROMSTRING)(char *strData,char *strResult);

ICEPUB_GETMD5FROMSTRING *icePub_getMD5FromString = 0;

HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");

if(hDLLDrv)

{

icePub_getMD5FromString=(ICEPUB_GETMD5FROMSTRING *)GetProcAddress(hDLLDrv,"icePub_getMD5FromString");

}

if(icePub_getMD5FromString)

icePub_getMD5FromString(buff2,buff);

if(hDLLDrv)

FreeLibrary(hDLLDrv);

AfxMessageBox(buff);

VB sample 代碼:

Private Declare Function icePub_getMD5FromString Lib "icePubDll.dll" (ByVal strData As String, ByVal strResult As String) As Integer

Dim a2 As Integer

Dim buff As String

Dim buff2 As String

buff2="Go with This life Loneliness, carried off Day And Night Dreariness, Between Sun And Moon, Tell Words from one's heart Each Other."

buff=Space(1024)

a2=icePub_getMD5FromString(buff2,buff)

MsgBox buff

下載

是否可以解決您的問題?

VB.NET 獲取文件MD5值

Public Function md5(ByVal a As String) As String

Dim tempmd5 As System.Security.Cryptography.MD5 = New System.Security.Cryptography.MD5CryptoServiceProvider()

Dim bytResult() As Byte = tempmd5.ComputeHash(System.Text.Encoding.Default.GetBytes(a))

Dim strResult As String = BitConverter.ToString(bytResult)

strResult = strResult.Replace("-", "")

Return strResult

End Function

如果要計算文件的就把參數(shù)改成字節(jié)數(shù)組就可以了,然后獲取文件GetBytes()傳進去就可以了。

當前文章:關(guān)于md5vb.net的信息
瀏覽路徑:http://muchs.cn/article26/dohogcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、小程序開發(fā)、定制開發(fā)、微信小程序、App設(shè)計、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)