【问题标题】:How do I hash my password correctly using perl? [closed]如何使用 perl 正确散列我的密码? [关闭]
【发布时间】: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 未使用,所有选项也可以使用]

标签: linux shell perl ubuntu crypt


【解决方案1】:

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

试试

hidden=$(perl -e 'print crypt($ENV{pass}, "salt")')

改为引用pass 环境变量。

【讨论】:

  • 我试过这个,我得到了同样的错误。
  • 别忘了export $pass 或在perl 前加上pass=$pass
猜你喜欢
  • 1970-01-01
  • 2019-03-19
  • 2021-02-19
  • 1970-01-01
  • 2015-10-21
  • 2017-06-26
  • 2010-12-22
  • 2015-06-28
  • 1970-01-01
相关资源
最近更新 更多