2009-07-11 13 views
12

Sto cercando un elenco di parole del dizionario inglese per un'applicazione di password su cui sto lavorando. Idealmente la lista può essere facilmente inserita in un database mysql. Qualche suggerimento?Database MySQL di parole inglesi?

sistemi

risposta

21

La maggior parte Unix hanno una serie di liste di parole, nel mio sistema Ubuntu è in/usr/share/dict/americano-inglese

Una sola parola deriva per linea, quindi è facile da inserire se davvero voglio in un database.

Questo oneliner bash fa inefficiente:

cat /usr/share/dict/american-english \ 
    | while read i; do echo insert into wordlist\(word\) VALUES \(\"$i\"\); done \ 
    | mysql -u<user> -p<pass> <db> 

Questo comando MySQL lo fa in modo efficiente (se il file è nella stessa macchina):

LOAD DATA LOCAL INFILE '/usr/share/dict/american-english' INTO TABLE wordlist; 
+0

Il mio sistema ha anche un file chiamato 'cracklib-small' in'/usr/share/dict/'. Contiene 53k parole mentre il file inglese americano ha 99k parole. Mentre cracklib è più piccolo, il file inglese contiene parole come "émigré", il che sarebbe terribile per le password, quindi se l'obiettivo è la generazione di password in stile diceware, potresti usare il dizionario di cracklib. – Nick

19

Per l'importazione di un elenco di parole a MySQL, utilizzare

LOAD DATA LOCAL INFILE '/usr/share/dict/words' INTO TABLE words;

dove words è una tabella a colonna singola.

+0

Suvviato, modificato la mia risposta per incorporare questo! –

+1

Solo per aggiungere qualcuno che ha cercato su google: per inserirlo in una tabella a più colonne puoi usare 'LOAD DATA LOCAL INFILE'/usr/share/dict/words 'INTO TABLE words (column); 'dove column is a varchar campo in cui vuoi memorizzare le parole. – stormbreaker

2

ho trovato questo: MySQL formatted english words list

dunno molto su quante parole non sono in ma è una lista enorme comunque :)

Ci sono circa 128/129k parole in esso e parole più lungo di 10 lettere hanno stato rimosso.

Problemi correlati