我正在编写一个 Perl 脚本,它将创建一个新用户(在 Ubuntu 上)。
这将需要沿着以下方向迈出一步
$encrypted_password = crypt ($password, $salt);
system ("useradd -d $home -s /bin/bash -g $group -p $encrypted_password $name");
的值应该$salt
是多少?Internet 上的示例似乎使用了任意值,但如果要针对用户输入的内容测试加密密码,则内核需要使用相同的salt 对输入进行哈希处理才能通过比较。
该网站声称盐是在输出中编码的crypt
,但这显然不是真的。
在 Perl 中的输出
print crypt("foo", "aa");
print crypt("foo", "aabbcc");
print crypt("foo", "aa1kjhg23gh43jhgk32kh325423g");
print crypt("foo", "abbbcc");
是
aaKNIEDOaueR6
aaKNIEDOaueR6
aaKNIEDOaueR6
abQ9KY.KfrYrc
除了来自不同盐的相同哈希值(这是可疑的)之外,似乎只使用了盐的前两个字符。从安全的角度来看,这没有意义。此外,输出的格式也不是上面链接中声明的格式。
那么在加密密码时我应该使用什么值的盐useradd
呢?