Passwords

用於加密 Linux 密碼的算法是什麼?

  • October 20, 2016

我在分配過程中註意到,如果我創建一個帶有密碼的使用者(azerty例如),然後呼叫命令更改密碼但給他完全相同的密碼:

passwd user
>> azerty       

儲存在./etc/shadow更改中的加密字元串(儘管密碼未更改)。

這裡使用什麼算法?

這不是加密,而是單向雜湊。

有一些不同的密碼散列通常用於 Linux 系統使用者的密碼,它們列在crypt(3)的手冊頁中

第一個是原始的 crypt 算法,它只支持 8 個字元的密碼(以及其他缺陷),希望你再也見不到它了。

第二種是基於 MD5 的 md5crypt ($$ a $$,$$ b $$),標有$1$。它被認為是過時的,主要是因為它不支持更改迭代量,即計算成本。

目前更多使用的是基於SHA-256 和 SHA-512 的雜湊、sha256crypt 和 sha512crypt,它們在結構上與 md5crypt 相似,但支持可變數量的迭代。它們分別標有$5$$6$。正如@SEJPM 很快評論的那樣,sha512crypt ( $6$) 至少是 Ubuntu 和 Debian 目前預設使用的。

對於$1$, $5$, 和$6$, 標識符後面的字元直到下一個$是鹽,它是在更改密碼時隨機生成的。

剩下的選項,不在主線 glibc 中是基於 Blowfish 的bcrypt,標有$2a$(或另一個字母)。Bcrypt 也使用鹽。

有關密碼散列的更多資訊,以及為什麼使用鹽以及為什麼越慢越好,請參閱 “如何安全地散列密碼?” 在 security.SE 上

引用自:https://crypto.stackexchange.com/questions/40841