2009-04-29 4 views
5

Dobbiamo importare automaticamente un grande elenco di utenti con alcuni dati in un sistema in esecuzione. Per una password iniziale voglio aggiornare l'elenco (formato csv al momento) con una chiave alfanumerica casuale (8 cifre).Come devo generare una password iniziale alfanumerica casuale per i nuovi utenti?

Quando lo si inserisce con una routine speciale (che richiede un file csv), la password (in questo caso la chiave alfanumerica) viene memorizzata come hash md5.

cioè ho generare una chiave alfanumerica casuale:

H2A5D39A -> MD5: 1642fccf791f15d137cf31282af79752 

In questo modo voglio creare una lista in cui gli utenti autenticati mi può chiedere il loro password iniziale (il tasto alfanumerico).

Avete un'idea migliore per una password iniziale "segreta"?

Come creeresti la chiave alfanumerica in Perl?

P.S .: Il "sistema in esecuzione", non programmato da noi, solo allowes password alfanumeriche (senza caratteri speciali, ...)

risposta

15

Come si creerebbe il tasto alfanumerico in Perl?

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

+0

+1 bello uno di linea – dfa

+0

Attenzione per analogie tra I, L, e 1 e 0 e O. Gestito facilmente assegnando la tua lista char a una matrice, e quindi facendo: join '', map $ chars [rand @chars], 1..8; – daotoad

6

Probabilmente userei pwgen. È fantastico in quanto consente una facile personalizzazione e ha l'opzione di non utilizzare caratteri ambigui (si pensi: I, 1, 0, 0).

ad esempio:

=> 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

risposta di Anonymous è molto buona, ma, se avete bisogno di una stringa casuale che si conforma ad alcune regole (ad esempio almeno una maiuscola, una minuscola, e un numero), è potrebbe voler esaminare String::Random.