当我使用纯文本 ( password
) 生成 MD5 哈希时,我得到:
$echo -n "password" | openssl dgst -md5 -binary | openssl enc -base64
X03MO1qnZdYdgyfeuILPmQ==
如果我知道纯文本,这很好用,但是我在 DB ( B081DBE85E1EC3FFC3D4E7D0227400CD
) 中得到了一个带有未知纯文本的 MD5 十六进制字符串,并且想要转换为二进制 Base64 编码的字符串。
$echo 0: B081DBE85E1EC3FFC3D4E7D0227400CD | xxd -r | openssl enc -base64
sIHb6F4ew//D1OfQInQAzQ==
两个输出都不匹配,我希望得到第一个值 ( X03MO1qnZdYdgyfeuILPmQ==
) 而不是第二个 ( sIHb6F4ew//D1OfQInQAzQ==
)
知道如何使用生成的 MD5 十六进制字符串获取 Base64 编码的字符串吗?
虽然这个字符串是 MD5,
password
但它不是password
ASCII 编码的 MD5,而是 UTF-16LE(这是 Windows 上的本机字符编码):将十六进制解码为二进制然后将其编码为 base64 的行非常好,只是您对结果的期望是错误的。如果您对结果有正确的期望(通过使用正确的字符编码)一切正常: