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

Passwords 如何将MD5十六进制字符串转换为base-64 MD5字符串?,passwords,md5,crypt,md5sum,Passwords,Md5,Crypt,Md5sum,我有一堆MD5散列密码,我想将其转换为crypt样式的MD5 如果我有明文,我可以轻松创建两个: % echo -n 'testpass' | md5sum 179ad45c6ce2cb97cf1029e212046e81 - % echo -n 'testpass' | openssl passwd -1 -stdin -salt '' $1$$JN/baUhJCUwYKagp48tsP0 但是如何将179ad45c6ce2cb97cf1029e212046e81转换为JN/baUhJCU

我有一堆MD5散列密码,我想将其转换为crypt样式的MD5

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

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

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

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

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

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


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

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

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


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

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

Apache的MD5加密哈希算法并不仅仅是密码的MD5和。也不是-1变体。这两个函数在输入密码中添加了一些内容,或者修改了输入密码(不包括salt),以给出结果哈希。如果确实使用您描述的将字符串管道化为md5sum的方法获得了MD5哈希值,则生成的哈希值不能反转为任何可以随后哈希为htpasswd兼容哈希的值


抱歉

您说您有一些MD5散列密码要转换为“加密样式”MD5。如果是这种情况,那么您可能希望生成一个可用于验证Apache用户的文件。不幸的是,您可能无法从普通MD5散列值执行此操作

Apache的MD5加密哈希算法并不仅仅是密码的MD5和。也不是-1变体。这两个函数在输入密码中添加了一些内容,或者修改了输入密码(不包括salt),以给出结果哈希。如果确实使用您描述的将字符串管道化为md5sum的方法获得了MD5哈希值,则生成的哈希值不能反转为任何可以随后哈希为htpasswd兼容哈希的值


抱歉

在了解密码是什么之前,请不要实施密码。你想玩什么就玩什么,学什么就学什么,只是在你真正理解它之前不要把它放在人们依赖的任何东西上。在你理解它之前不要实现加密。你想玩什么就玩什么,学什么就学什么,只是在你真正得到它之前不要把它放在人们依赖的任何东西上。加密有什么不同?在这两种情况下都没有盐,
opensslpasswd
有什么不同之处?如果只是额外的迭代,那么我也可以在翻译中这样做。我想阅读源代码会告诉你它有什么不同。@Bruno:我知道,我是在引用Soren;-)md5 crypt做的第一件事就是散列密码短语和salt,因此应该有一种方法将md5散列密码转换为md5 crypt散列密码。加密有何区别?在这两种情况下都没有盐,
opensslpasswd
有什么不同之处?如果只是额外的迭代,那么我也可以在翻译中这样做。我想阅读源代码会告诉你它有什么不同。@Bruno:我知道,我是在引用Soren;-)md5 crypt首先对密码短语和salt进行哈希,因此应该有一种方法将md5哈希密码转换为md5 crypt哈希密码。