登录时出现“盐长度错误”消息。使用什么算法来生成用户密码?

登录时出现“盐长度错误”消息。使用什么算法来生成用户密码?

我正在尝试以编程方式更改用户的密码,并在此过程中收到一些我无法解释的消息。

我首先运行这个命令:

sudo usermod -p "$(openssl passwd -1 newpassword)" theuser

没有打印错误,但下次登录时,我收到以下消息:

Debian GNU/Linux 系统中包含的程序是自由软件;每个程序的确切分发条款在 /usr/share/doc/*/copyright 中的各个文件中进行了描述。

在适用法律允许的范围内,Debian GNU/Linux 不附带任何保证。上次登录:2017 年 1 月 30 日星期一 16:22:41,来自 193.50.110.1 盐长度错误:当 8 <= n <= 16 时为 0 字节。

我尝试了另一种加密方法:

sudo usermod -p "$(openssl passwd -crypt newpassword)" theuser

仍然没有错误,但消息发生了变化:

错误的盐长度:当预期 8 <= n <= 16 时为 0 字节。

我终于尝试了其他方法,使用mkpasswd更强的加密(与这个帖子):

sudo usermod -p "$(mkpasswd --method=sha-512 newpassword)" theuser

这次错误消失了,所以我相信这与哈希算法的强度有关。我不明白的是哪种算法可以并且应该用于生成密码。

可以安全地使用哪些算法来mkpasswd避免消息错误?这是否也意味着mkpasswd命令在启动时运行?

更新:我忘了提及我使用 Raspbian Jessie Lite 收到了这些消息。我还在 mkpasswd.c 源中发现了一些包含此错误消息的字符串rfc1036/whoisGitHub 存储库。

相关内容