2012-11-15 63 views
3

我在c中第一次使用crypt()函數。我只是在進行一些初始測試,所以實際上並未使用這些測試,特別是恆定的鹽值。 :)C crypt()在md5模式下工作不正常?

我運行下面的代碼:

crypt(password, "$1$k7de83ka7"); 

從我的墓穴文檔的理解,這提供了鹽值應指定的crypt()的MD5模式下運行,這將產生格式的哈希「$ 1個$」。 $ 1 $指定該值與MD5進行散列處理。這就是我理解它應該如何工作。

但是,當我測試上述代碼時,返回的值是「$ 1ciFuWRySk3A」,所以它似乎缺少一個'$'字符。我做錯了什麼導致這個問題?

+0

返回的散列值應該是格式'$ 1 $ salt $ encrypted'。只有一個'$'似乎是錯誤的。您正在使用哪個「crypt」的實現? –

+0

什麼是您的操作系統(linux/BSD /嵌入式;版本)以及用於實現'crypt(它是ucglibc/newlib/glibc;版本)的庫是什麼? – osgx

回答

1
crypt(password, "$1$k7de83ka7"); 

我不認爲你正確地調用crypt,從該名男子頁:

如果鹽是開始以字符「$ ID $」 一字符串,其後由字符串由 「$」終止:$ $ ID $鹽加密

然後ID識別的加密方法。

,你不應該指望它返回一個包含字符串$(不一定)

如果成功,則返回一個指向加密後的口令。在 錯誤,返回NULL。

相關問題