2009-04-29 41 views
5

我們必須自動將大量用戶數據導入正在運行的系統。 對於初始密碼,我想用隨機字母數字鍵(8位數字)更新列表(csv格式)。我應該如何爲新用戶生成一個隨機的字母數字初始密碼?

當用一個特殊的例程(需要一個csv文件)插入它時,密碼(在這種情況下是字母數字鍵)以md5散列形式存儲。

即我生成一個隨機的字母數字鍵:

H2A5D39A -> MD5: 1642fccf791f15d137cf31282af79752 

這樣,我想創建一個列表,其中認證用戶可以問我他們的初始密碼(字母數字鍵)。

你對「祕密」初始密碼有更好的想法嗎?

你會如何在Perl中創建字母數字鍵?

P.S:在「運行系統」,不是由我們編程,只是allowes字母數字密碼(無特殊字符,...)

回答

15

你會如何創建在Perl的字母數字鍵?

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

+0

+1好的一個襯墊 – dfa 2009-04-29 08:12:34

+0

當心I,L之間的相似性,而1和0和O.通過將char列表分配給一個數組,然後執行以下操作可輕鬆處理:join'',映射$ chars [rand @chars],1..8; – daotoad 2009-04-29 22:28:12

6

我可能會使用pwgen。它很好,因爲它允許輕鬆定製,並且不使用歧義字符(想想:I,I,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 
1

匿名的答案是非常好,但是,如果你需要符合一定的規則(如至少一個大寫字母,一個小寫字母和一個數字)一個隨機字符串,你可能想看看String::Random