5

我们必须自动将带有一些数据的大量用户导入到正在运行的系统中。对于初始密码,我想使用随机字母数字密钥(8 位)更新列表(目前为 csv 格式)。

当使用特殊例程(需要 csv 文件)插入密码时,密码(在本例中为字母数字键)存储为 md5 哈希。

即我生成一个随机的字母数字密钥:

H2A5D39A -> MD5: 1642fccf791f15d137cf31282af79752

这样我想创建一个列表,经过身份验证的用户可以向我询问他们的初始密码(字母数字密钥)。

您对“秘密”初始密码有更好的想法吗?

你将如何在 Perl 中创建字母数字键?

PS:“运行系统”,不是我们编程的,只允许字母数字密码(没有特殊字符,...)

4

5 回答 5

15

你将如何在 Perl 中创建字母数字键?

join'', map +(0..9,'a'..'z','A'..'Z')[rand(10+26*2)], 1..8

于 2009-04-29T08:06:40.287 回答
6

我可能会使用 pwgen。它很棒,因为它可以轻松定制,并且可以切换不使用不明确的字符(想想:I、l、1、O、0)。

例如:

=> pwgen -c -n -B 8 50
shuFak9o peiCh3Oo ohPieng9 Vohh7zuu os3Theep aeV9nuo9 aexeik4B aeChoh9s
uth3eePu baePhu3o aiS3pahn iPie4itu We9zuphi xie3Chi3 yeiRoo7c fai3ITai
aCh9ohco Echuab7v Fu9ahCho Aevae4no Peethai9 AiJio3Pa aeNge9Fo baePh7Uy
Nai7shei eeMoh9en Zeibai4n eGe7yuch Jaek7nai aeZah7sh Chei4ua4 shoo9oG9
iu7Wohho aep7De4U Fong9fo3 AhneeP7U oxae7Yoh ahF4eim3 fahm9Aiw naoNg4ie
Chie4xua jix3Uvot aChei7ai diey4Shi Yur7ee4j eeJeo9ee Bou3ahmu kaeb4Cah
Eh4Eemae oD4phoo9
于 2009-04-29T09:58:39.677 回答
1

Anonymous 的回答非常好,但是,如果您需要一个符合某些规则的随机字符串(例如至少一个大写、一个小写和一个数字),您可能需要查看String::Random

于 2009-04-29T14:21:58.340 回答
1

另一个要考虑的模块是Data::Random

于 2009-04-29T17:57:07.357 回答
1

我刚刚完成了对 CPAN 上可用于生成随机密码的 12 个模块的回顾:

http://blogs.perl.org/users/neilb/2011/08/random-password-generation.html

简而言之:如果您想要一个可发音的密码,请查看Crypt::YAPassGen,否则请使用App::Genpass

App::Genpass 避免了易混淆的字符,并为您提供比 Data::Random 或 String::Random 更好的控制(和默认值)

于 2011-08-08T16:01:56.847 回答