想理解 md5 的输出格式,首先要明白 md5 的规范,以及基本的编码知识。 实际上 md5 算法是底层算法,它并不是针对字符串的。算法输入的内容是一堆 bit 位。字符和文件都可以表示成位,然后丢进 md5 算法中运算。同样地,它的输出也是一堆 bit 位。 所以你看到的【字母-数字】组合,则是对这些 bit 位的表达。根据维基百科 https://zh.wikipedia.org/wiki...,可以知道: 一般 128 位的 MD5 散列被表示为 32 位十六进制数字。 所以这些字符取值范围仅限于 0-9 和 a-f。如二进制的八位 0001 1111 表示为字符 1f。从而在输出中也就没有其他符号出现的可能了。
想理解 md5 的输出格式,首先要明白 md5 的规范,以及基本的编码知识。
实际上 md5 算法是底层算法,它并不是针对字符串的。算法输入的内容是一堆 bit 位。字符和文件都可以表示成位,然后丢进 md5 算法中运算。同样地,它的输出也是一堆 bit 位。
所以你看到的【字母-数字】组合,则是对这些 bit 位的表达。根据维基百科 https://zh.wikipedia.org/wiki...,可以知道:
所以这些字符取值范围仅限于 0-9 和 a-f。如二进制的八位
0001 1111
表示为字符1f
。从而在输出中也就没有其他符号出现的可能了。