问题描述
我对 MD5 加密的一些基础知识感到好奇,我无法从 Google、Java 问题或密集的法律论文中获得:
1-如何以字节为单位测量 MD5 哈希字符串?这取决于字符串是 UNICODE 还是 ANSI?
2-MD5 是不对称算法吗?
示例:如果我的应用使用密钥(MD5_128 哈希字符串,由 9 个字符组成的 ANSI)与 REST 网络服务对话 (http) 以对接收的数据进行解密,那么在非对称算法中这是否占 9x8=72 字节?>
我在 Windows 中使用 windevs 25,使用 Encrypt 和 HashString 等函数,但我缺乏加密知识。
编辑:还没有回答,但在跳转到哈希和加密之前,我似乎需要更多地了解字符集。 https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/
解决方法
一个 MD5 哈希是 128 位,16 字节。结果是二进制,而不是文本,因此既不是“ANSI”也不是“Unicode”。像所有散列一样,它是非对称的,从您可以散列长度超过 128 位的输入这一事实应该可以看出这一点。由于它是非对称的,因此您无法对其进行“解密”(解密)。这是有意为之。