【发布时间】:2010-11-25 14:35:03
【问题描述】:
如果我有一个 32 个字符的字符串(一个 MD5 哈希)并且我使用 Base64 对其进行编码,那么编码字符串的最大长度是多少?
【问题讨论】:
-
如果你有一个 32 个字符的 MD5 哈希字符串,那么它已经是十六进制编码的,不需要 base64 编码。
-
MD5 哈希不是十六进制的!它是 16 个字节 - 十六进制只是一种常规表示。
-
@GregS,你是正确的,MD5 哈希通常以十六进制形式表示,它是 Base64 的子集。但是转换为 Base64 是有目的的——Base64 需要更少的字符,因为它具有更大的字符集。如果您使用 Base64(22 个字符)而不是十六进制(32 个字符)表示法,当您以纯文本或字符编码方案保存时,它将为您节省磁盘空间。
-
@GregS 实际上,如果这是预期的格式,您确实需要对其进行编码,例如在 HTTP Content-MD5 标头中。
-
@Michael 实际上,在这种情况下,您必须先对其进行十六进制解码,然后再对其进行 base64 编码。 32 个字符的十六进制字符串的 base64 编码不正确。
标签: hash cryptography base64 md5 cryptographic-hash-function