【问题标题】:perl password confirmationperl 密码确认
【发布时间】:2011-05-23 06:51:08
【问题描述】:

谁能给我一个示例代码,让用户输入两次密码并比较它们并打印文本是否正确,例如当我们创建新用户时。提前谢谢...

【问题讨论】:

  • 如果您的代码需要存储密码以便以后确认用户输入的密码,请使用a cryptographic hash function,例如SHA-2
  • @hanmyo - 我是初学者.. 这是我的一个主题的研讨会所必需的。我知道在 java 和 php 中进行编码,但实际上不知道如何使用模块..

标签: perl password-confirmation


【解决方案1】:

来自perldoc -f crypt

$pwd = (getpwuid($<))[1];

system "stty -echo";
print "Password: ";
chomp($word = <STDIN>);
print "\n";
system "stty echo";

if (crypt($word, $pwd) ne $pwd) {
    die "Sorry...\n";
} else {
    print "ok\n";
}

根据您的需要进行修改。

【讨论】:

  • 是的,这很好,我想我以前见过......我会尝试改变,我是初学者......谢谢。
  • 这不好,这是检查密码与先前加密密码的代码,而不是检查两个条目是否相等
  • 是的,但它显示了如何在控制台读取密码,我想我只需复制整个 sn-p 并注明出处。似乎已经足以让 OP 继续前进。
【解决方案2】:

这是基于 ephemient 提示的答案。我不需要我删除的第一行,如果 ne 假设为 eq,可能意味着相等:) 它看起来有效..

system "stty -echo";
print "Password: ";
chomp($word = <STDIN>);
print "Password again: ";
chomp($pwd = <STDIN>);
print "\n";
system "stty echo";

if (crypt($word, $pwd) eq $pwd) {
    die "Sorry...\n";
} else {
    print "ok\n";
}

【讨论】:

  • 这将永远给出“对不起...”错误。不要为此使用 crypt()。
【解决方案3】:

地穴是一条红鲱鱼。

system "stty -echo";
print "Password: ";
chomp(my $password = <STDIN>);
print "\nPassword again: ";
chomp(my $check_again = <STDIN>);
print "\n";
system "stty echo";

if ($password ne $check_again) {
    die "Sorry...\n";
} else {
    print "ok\n";
}

【讨论】:

  • 这几乎是完全 OP 想出的。
  • 感谢您的回答。我根据需要修改了 ehemient 的示例。答案在下面。它与你的非常相似,除非是案例。如果您在 $password 和 $check_again 之间使用“ne”,尽管密码相同,但它会进入“Sorry”部分。所以我用'eq'而不是'ne'。它看起来很有效。我也会试试你的。我还没有运行它。然后我也会检查你的答案..再次感谢..问候..
  • @user403295:您不想想使用 crypt 检查两个输入的字符串是否相同。真的。你只想使用 ne。如果我的代码不适合你,你没有完全复制它。再试一次?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 2013-09-18
相关资源
最近更新 更多