创建Linux用户时如何设置指定加密哈希?

Cyr*_*aud 2 linux password hash

我想在我的电脑上创建几个 Linux 用户来测试 JohnTheRipper 对不同类型的密码(包括长度、字符集和加密哈希方法)。在创建新用户时,如何轻松指定要使用的散列算法?我知道文件 /etc/login.defs 包含变量 ENCRYPT_METHOD,该变量在许多 Debian 系统上默认设置为 SHA512,但我想知道是否可以在不修改此文件的情况下使用另一个加密哈希。

ps:我尝试修改此文件,重新启动并使用命令 adduser 创建一个新用户,但加密哈希方法用户始终是 SHA512

谢谢

HBr*_*ijn 5

使用非默认散列方法设置密码的最简单方法是先手动散列密码,然后在设置用户时提供该密码:

 adduser --password HASHEDPASSWORD user
Run Code Online (Sandbox Code Playgroud)

其中 HashEDPASSWORD 必须遵循您系统的crypt函数标准( man 3 crypt):

如果 salt 是一个以字符 "$id$" 开头的字符串,后跟一个以 结尾的字符串"$"

         $id$salt$encrypted
Run Code Online (Sandbox Code Playgroud)

然后,而不是使用 DES 机器, id 标识所使用的加密方法,然后决定如何解释密码字符串的其余部分。支持以下 id 值:

          ID  | Method
          ---------------------------------------------------------
          1   | MD5
          2a  | Blowfish (not in mainline glibc; added in some
              | Linux distributions)
          5   | SHA-256 (since glibc 2.7)
          6   | SHA-512 (since glibc 2.7)
Run Code Online (Sandbox Code Playgroud)

所以 $5$salt$encrypted 是SHA-256编码的密码和$6$salt$encrypted是SHA-512编码的一种。

要从命令行生成正确的散列,您可以查看此处