如何将MD5十六进制字符串转换为base-64 MD5字符串?

时间:2011-10-01 14:26:43

标签: passwords md5 crypt md5sum

我有一堆MD5哈希密码,我想将其转换为隐藏式MD5。

如果我有明文,我可以轻松创建两者:

% echo -n 'testpass' | md5sum
179ad45c6ce2cb97cf1029e212046e81 -

% echo -n 'testpass' | openssl passwd -1 -stdin -salt ''
$1$$JN/baUhJCUwYKagp48tsP0

但如何将179ad45c6ce2cb97cf1029e212046e81转换为JN/baUhJCUwYKagp48tsP0

2 个答案:

答案 0 :(得分:2)

第一个字符串是十六进制,第二个字符串是base64。

MD5哈希是一个128位数字 ..它可以选择打印的方式可以是十六进制字符串或base64编码字符串 - 两者都只是128位的表示号。

但是ms5sumopenssl passwd不会加密将密码哈希到相同的128哈希值,因此相同的密码不会产生相同的128位数,所以在您的示例一个密码哈希不会转换为另一个

答案 1 :(得分:1)

您说您有一些要转换为“crypt-style”MD5的MD5哈希密码。如果是这种情况,那么您可能希望生成可用于对Apache用户进行身份验证的文件。不幸的是,您可能无法从普通的MD5哈希值中执行此操作。

Apache的MD5-Crypt哈希算法不仅仅是密码的MD5总和。 -1变体也不是。这两个附加内容或以其他方式修改输入密码,不包括salt以提供结果哈希。如果您确实使用您描述的方法将MD5哈希值汇总到md5sum,则生成的哈希不能反转为您可以哈希到htpasswd兼容哈希的任何内容。

抱歉