网站建设资讯

NEWS

网站建设资讯

关于md5vb.net的信息

关于vb.net中Socket的问题

我不给你代码了,我才编了SOCKET的,告诉你原理吧(我的编程经验而已)

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的承德县网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

SOCKET传输文件和接受是有大小限制的,默认是81**来则也就是8K多,你可以改小,但改大我没试过,然后你必须把文件分成若干份,然后传过去,然后在接收端组合起来,同时接收端的接受大小要和发送大小统一。

至于你说的文件名,文件名不属于文件数据中的一部分,它不参与数据传输的,你只能在接收端重新改名字。

同时为什么要用上面的方法传呢,因为VB.NET中的SOCKET有很多问题,我就为此烦过,因为要丢包(理论上TCP不存在),或者粘包,或者断包,也就是你在接收端获取文件时数据是要出错的,比如你定长3000B,结果接收端可能先收到2000B,当接受端接受后,处理会出错的。

所以SOCKET的标准发送方法是建立定长的结构体(结构体必须定义为可序列化结构体),最好结构体里面至少包含有 1,文件名,2,本包序号,3,本包数据,比如每个包大小3040B,文件名占20,序号占20,数据占3000,然后发送出去,接收端每次固定接受3040B,如果接受到的包没有这么大(比如收到2000),那么继续接受(1040),直到达到3040后组合成一个包,在把包分解成结构体,相同的文件名为一个文件,再按照序号按次组合其中的数据,这就完成了传输。这样的方法还可以同时传送多个文件,因为结构体里面包含了文件名和序列号,不会错乱,如果是大文件,请不要接收完毕后(最后一个包的序号可以为-1,或者包里包含总长度,检查到序号为-1时表示完毕,或者达到总长度后表示完毕)再组合,因为这样会浪费电脑内存,最好的方法是一边接受数据,一边写入到文件中(收到第一个包时就建立文件,以后每个包的数据都往里面写)。

回答你的问题:

1、经过上面的传输后,文件是不变化的,MD5检查都是正常的,不用担心文件大小有变化(如果有变化,那就是代码没编对)

2,、文件名问题,我前面提到了,文件名是不参与传输的,它不属于数据中的一部分,比如同一个文件,不管你怎么改名字MD5是不变的。你只能通过把文件名想办法传给对方(比如我上面说的结构体方法),让对方写入文件时使用。

3,代码:

还是给你找找吧,等等

不行,我的都很大,很长,你还是在网上找吧,有很多例子,我也是网上学的。

java MD5 对应的C#方法

在vb.net里面,可以这样算文件的MD5值,你用工具转换过来就有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

运行结果

小文件

系统自带工具运行结果

大文件

以上代码小文件(十几K)、大文件(几G)都测试过

求破解md5: 1125c23b25ee31e73769554d8f448244

解密的没有...

加密的自己做一个吧

3.119 icePub_getMD5

l 函数原型:

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

输入:pBuf 待处理的数据

nLength 待处理数据的长度

输出:strResult MD5结果串,32字节

返回码:

l VC连接Lib方式声明

__declspec(dllexport)

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

l 动态调用例程

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 函数原型:

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

输入:strFilePath 待MD5的文件名

输出:strResult MD5结果串,32字节

返回码:

l VC连接Lib方式声明

__declspec(dllexport)

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

l 动态调用例程

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 函数原型:

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

输入:strData 待处理的文本串

输出:strResult MD5结果串,32字节

返回码:

l VC连接Lib方式声明

__declspec(dllexport)

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

l 动态调用例程

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

如果要计算文件的就把参数改成字节数组就可以了,然后获取文件GetBytes()传进去就可以了。


文章标题:关于md5vb.net的信息
URL标题:http://njwzjz.com/article/dohogcg.html