Hash MD5的基础知识:如何知道哈希位长度和对称性?

Hash MD5的基础知识:如何知道哈希位长度和对称性?,hash,md5,windev,Hash,Md5,Windev,我对一些我无法从谷歌获得的MD5加密基础知识感到好奇,这里有Java问题,也没有密集的法律论文: 1-如何以字节为单位度量MD5哈希字符串?这取决于字符串是UNICODE还是ANSI? 2-MD5是非等距算法吗? 示例:如果我的应用程序使用密钥(MD5_128哈希字符串,ANSI由9个字符组成)与REST Web服务对话(http)以取消对接收到的数据的加密,那么在非对称算法中,这是否解释了9x8=72字节 我在Windows中使用Windevs 25,使用加密和HashString等函数,但我

我对一些我无法从谷歌获得的MD5加密基础知识感到好奇,这里有Java问题,也没有密集的法律论文:

1-如何以字节为单位度量MD5哈希字符串?这取决于字符串是UNICODE还是ANSI?

2-MD5是非等距算法吗?

示例:如果我的应用程序使用密钥(MD5_128哈希字符串,ANSI由9个字符组成)与REST Web服务对话(http)以取消对接收到的数据的加密,那么在非对称算法中,这是否解释了9x8=72字节

我在Windows中使用Windevs 25,使用加密和HashString等函数,但我缺乏加密方面的知识


Edit:还没有编写,但在跳到哈希和加密之前,我似乎需要了解更多有关字符集的信息

MD5哈希是128位16字节。结果是二进制的,而不是文本,因此它既不是“ANSI”也不是“Unicode”。与所有散列一样,它是不对称的,这一点应该从您可以散列长度超过128位的输入这一事实中显而易见。因为它是不对称的,所以不能“解密”。这是有意设计的。

第一个基本点:MD5不是加密,它是一个单向散列函数。正如“二进制性”的另一个说明:MD5的输出只有16个字节。但它通常表示为16个字节的十六进制编码,即32个十六进制数字。@JoachimSauer:当然,但问题提到“9x8=72字节”。这在任何编码中都没有意义。关于第二个问题,对称或非对称只对加密或数字签名(某种程度上)有意义。因为在散列过程中没有键在起作用,所以将其分类为对称或非对称也没有意义。散列函数用于创建对称的HMAC。散列函数还用于创建非对称数字签名算法,如括约肌+。