我正在使用基於Windows的Subversion,並希望在.NET中編寫一個易於使用Apache密碼文件的實用程序。我知道它使用了一個稱爲MD5Crypt的函數,但我似乎無法找到超出該算法的描述,在某些時候它使用MD5創建哈希。背後的算法MD5Crypt
有人可以描述MD5Crypt算法和密碼行格式嗎?
我正在使用基於Windows的Subversion,並希望在.NET中編寫一個易於使用Apache密碼文件的實用程序。我知道它使用了一個稱爲MD5Crypt的函數,但我似乎無法找到超出該算法的描述,在某些時候它使用MD5創建哈希。背後的算法MD5Crypt
有人可以描述MD5Crypt算法和密碼行格式嗎?
隱窩算法更新與SHA256和SHA512使用的精確的文字說明是在http://www.akkadia.org/drepper/SHA-crypt.txt
它包括MD5算法的對比,所以它應該給你你在找什麼。
您可以在tcllib package.找到md5crypt的實現從sourceforge可以下載。
MD5Crypt的一個Apache兼容md5crypt的例子基本上是老式的UNIX crypt函數的替代品。它是在freebsd中引入的,並且也被其他組所採用。
的基本思路是這樣的:
但是有一個問題:
所以,我們可以給密碼添加一個「鹽」字符串。
你提到的.NET,還有在另一個論壇上是一個指針這樣的:
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new
System.Security.Cryptography.MD5CryptoServiceProvider();
string hash =BitConverter.ToString((md5.ComputeHash(
System.Text.ASCIIEncoding.Default.GetBytes(stringtohash))));
HTH!
這個過程相當複雜......鹽和密碼不是一次就是一次,而是1000次。此外,base64編碼使用不同的字母表,並且從末尾刪除填充。
最好的事情可能是找到一個庫來使用,就像cygwin下的glibc一樣。
既然你對Apache編碼,看看crypt-md5的Apache's implementation。
在C中的原始算法(我認爲)可以找到here。它不同於上面的實現只是由不同的幻數。
謝謝!這正是我很久以前正在尋找的東西。我真的希望在Stack Overflow上有更多這樣的信息。不考慮個別編程語言的算法描述和討論。我希望我不僅僅贊成和接受。 – Lee 2011-02-16 01:13:11