如何使用 perl 正确散列我的密码? [关闭]

Posted

技术标签:

【中文标题】如何使用 perl 正确散列我的密码? [关闭]【英文标题】:How do I hash my password correctly using perl? [closed] 【发布时间】:2021-03-04 12:44:26 【问题描述】:

我在使用脚本添加用户时尝试使用 perl 对我的密码进行哈希处理,但是当我尝试切换到该用户时,它说密码不正确。这是我写的:

hidden=$(perl -e 'print crypt($pass, "salt"),"\n")
useradd -m -p $hidden -d /home/$user -s /bin/bash $user 

在此之上,我归因于“通过”我的新密码和“用户”我的新用户名。

【问题讨论】:

请注意,crypt 对密码进行哈希处理,但不会对其进行加密。您无法撤消此操作,但您可以通过再次运行相同的操作并将其与之前生成的值进行比较来验证密码。 我很困惑。如果我只是尝试使用命令“su user”登录,然后输入我的密码,它不应该自动进行此验证吗? 是的,确实如此。它会自动查找存储的哈希值并使用适当的过程对密码进行哈希处理并比较这些值。如果您使用可能不是这种情况的其他实用程序,您必须自己进行验证。 您的 perl 命令缺少结尾单引号 ' 见How can I process options using Perl in -n or -p mode? [即使-n/-p 未使用,所有选项也可以使用] 【参考方案1】:

您似乎想在 shell 环境中使用 $pass,但在 Perl 解释器中,它看起来像 Perl 变量 $perl

试试

hidden=$(perl -e 'print crypt($ENVpass, "salt")')

改为引用pass 环境变量。

【讨论】:

我试过这个,我得到了同样的错误。 别忘了export $pass 或在perl 前加上pass=$pass

以上是关于如何使用 perl 正确散列我的密码? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

散列密码的最佳实践 - SHA256 还是 SHA512?

如何在 Perl 中打印散列的内容?

Oracle Apex 21.1:如何使用散列密码创建、存储和检索(验证)用户

在路由文件中散列密码并更新

如何散列密码

如何正确存储 PBKDF2 密码哈希