2011-10-01 72 views
0

我有一堆MD5哈希密碼,我想將其轉換爲crypt-style MD5。如何將MD5十六進制字符串轉換爲base-64 MD5字符串?

如果我有明文我可以輕鬆地創建兩個:

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

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

但我怎麼轉換179ad45c6ce2cb97cf1029e212046e81JN/baUhJCUwYKagp48tsP0

+0

直到你明白它是什麼,才執行加密。玩這一切你想要的和學習,只是不要把它放到人們所依賴的任何東西上,直到你真的得到它。 – Incognito

回答

2

第一個字符串在十六進制中,第二個字符串是一個base64。

MD5散列是一個128位數字 ..它可以選擇打印的方式可以是一個十六進制字符串或base64編碼的字符串 - 都只是128位數的表示。

然而ms5sumopenssl passwd不會加密哈希密碼相同的128散列值,所以相同的密碼不會產生相同的128位數字,所以在您的例子中的一個密碼散列不會轉換爲其他

+0

加密如何不同?在這兩種情況下都沒有鹽,「openssl passwd」做了什麼不同?如果只是額外的迭代,那麼我在翻譯中也可以這樣做。 –

+0

openssl-passwd手冊說明它是基於MD5的,而不是實際的MD5。我想讀源代碼會告訴它是如何不同。 – Soren

+0

@Legate它不是加密的開始... –

1

你說你有一些你想要轉換成「crypt-style」MD5的MD5哈希密碼。如果是這種情況,那麼您可能希望生成一個可用於驗證Apache用戶的文件。不幸的是,你可能無法從普通的MD5哈希值中做到這一點。

Apache的MD5-Crypt哈希算法不是僅密碼的MD5總和。 -1變體也不是。兩者附加一些東西或以其他方式修改不包含salt的輸入密碼以提供結果散列。如果確實使用描述的方法將MD5哈希值傳遞給md5sum,那麼得到的哈希值不能顛倒爲任何可以散列到htpasswd兼容哈希值的值。

對不起

相關問題