2011-06-16 91 views

回答

1

您可能需要了解有關Linux密碼存儲格式的一些背景信息 - 特別是在您實際實現自己的密碼配置之前,尤其需要配置陰影密碼。

在使用glibc2的Linux發行版上,散列函數有一個'魔術位',並以salt爲前綴。

魔術位以 '$ X $' 開始關閉,並用於確定已使用的散列函數:

  • $ 1 $爲MD5
  • $爲河豚
  • $ 2,
  • $ 5 $對於SHA-256和
  • $ $ 6 SHA-512

(如NetBSD的其他UNIX系統可能有這種不同的值)。

魔術比特然後跟隨8比特構成鹽,並可選地由另一個「$」終止。在這個和下一個「$」之間,你會發現實際的密碼散列。

現在幾乎所有的現代Linux系統都不會將密碼存儲在世界可讀的/etc/passwd中。相反,密碼在/etc/shadow中被映射,其中只有root允許讀取權限。如果使用的是密碼密碼方案,/etc/passwd文件將顯示一個字符,如'*'或'x'而不是密碼。

一個典型的密碼在/etc/shadow的格式將是這樣的:

$a:$b:$c:$e:$f:$g:$h:$i 

其中:

$一個:用戶名

$ B:鹽和散列密碼(如上所述)。如果這是「NP」或「!」或null,那麼這意味着該帳戶沒有密碼。 「LK」或「*」表示賬戶被鎖定,用戶將無法登錄。 「!!「表示口令已過期

$ C:自從上次密碼更改的劃時代

$ d天:天,直到發生變化,允許

:變更前的天數需要

$ f:過期天數警告

$ G:帳戶之前天沒有活性

$ H:天紀元以來,當帳戶到期

$ I:留作將來使用。 http://configuration.logfish.net/index.php/etc/shadow

參考文獻::

一個陰影密碼文件的例子可以在以下網址找到

crypt(3) - Linux man page

Why shadow your passwd file?

Understanding Linux Password Hashes

Shadow password on wikipedia

1

嘗試使用PHP crypt function

+0

'crypt()'函數是否總是使用與OS使用的鹽相同的salt? – powerboy 2011-06-16 05:08:22

+0

@powerboy:不;你必須自己提供鹽。 – icktoofay 2011-06-17 02:49:12