Cracking simultaneo della password

-5

Sto scrivendo un'utilità in Go che tenta contemporaneamente di decifrare le password date un hash salato e il sale. Quella parte funziona bene, ma ora mi piacerebbe approfittare delle routine di go e farle scoppiare contemporaneamente. Il problema è che la lista di parole è condivisa e tutte iterano riga per riga sullo stesso elenco di parole. Ogni goroutine dovrebbe avere la sua copia dell'elenco di parole o possono condividere lo stesso file mappato in memoria? Il mio pensiero è che sarebbe più lento se tutti cercano di ripetere simultaneamente la stessa area di memoria. Esiste un modello di progettazione migliore?

    
posta Dan 29.12.2017 - 06:11
fonte

1 risposta

3

No, la lettura simultanea dalla stessa memoria non rallenta le cose. Questo è un modo perfetto per gestire il flusso di dati.

Tuttavia, l'uso contemporaneo di altre risorse potrebbe essere problematico. In tal caso, avere una goroutine di un singolo lettore che scrive in canali bufferizzati per le goroutine dei lavoratori può essere un'architettura efficiente ed elegante.

Si noti che il cracking della CPU va bene quando si vuole sperimentare con concetti di cracking o si stanno violando algoritmi hash estremamente deboli come MD5. Per carichi di lavoro realistici, non c'è modo di aggirare massicciamente il cracking della GPU. Per un carico di lavoro legato all'elaborazione come il cracking, il tuo "hash al secondo" è limitato principalmente dal numero di core. L'utilizzo di più goroutine rispetto ai core della CPU sarà dannoso. Ma mentre una CPU ha quattro o forse anche 32 core, una GPU ha centinaia o migliaia di core.

    
risposta data 29.12.2017 - 12:51
fonte

Leggi altre domande sui tag