提问人:RBS 提问时间:7/27/2023 最后编辑:RBS 更新时间:7/27/2023 访问量:47
哈希输出是否默认为十六进制编码
Is hashing output is by-default hex encoded
问:
由于 md5 哈希算法生成 128 位(=16 字节)的字符串长度 & SHA256 哈希算法生成长度为 256 位(=32 字节)的字符串。
bash-3.2$ md5 <<< 'hash'
4e76434eea3c9d9cf9cb10bbf3f4a74b // string with 32 chareacter.
bash-3.2$
bash-3.2$
bash-3.2$ shasum -a 256 <<< 'hash'
4e5e494fa316ffc82b8252b23524f1433639858267d641c1217059dc4403e045 // string with 64 chareacter.
bash-3.2$
基于输出。
MD5 生成 32 个字符的十六进制字符串,SHA256 生成 64 个字符的十六进制字符串。
在这里,我的假设是,哈希输出始终使用十六进制编码进行编码。 对于给定的哈希算法,输出字符串的有效负载大小是其两倍,并且仅包含十六进制编码的允许字符。
我的假设正确吗?
答:
0赞
CherryDT
7/27/2023
#1
哈希通常显示为十六进制字符串,并且通常也存储为十六进制字符串,但它也可以简单地作为二进制数据存储在缓冲区中,甚至在内部存储为大整数,因为本质上它只是一个大数字。
当你处理它时,总是检查你使用的库/代码的输出和输入,以确保它们产生/期望相同的格式,否则你需要自己负责编码或解码。
评论