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

问题描述

我对 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 位的输入这一事实应该可以看出这一点。由于它是非对称的,因此您无法对其进行“解密”(解密)。这是有意为之。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...