Partendo dal presupposto che l'I / O del disco e la RAM libera sono un collo di bottiglia (mentre il tempo della CPU non è la limitazione), esiste uno strumento in grado di calcolare più digest di messaggi contemporaneamente?
Sono particolarmente interessato a calcolare i digest MD-5 e SHA-256 di file di grandi dimensioni (dimensioni in gigabyte), preferibilmente in parallelo. Ho provato openssl dgst -sha256 -md5
, ma calcola solo l'hash usando un algoritmo.
Pseudo-codice per il comportamento previsto:
for each block:
for each algorithm:
hash_state[algorithm].update(block)
for each algorithm:
print algorithm, hash_state[algorithm].final_hash()
for i in file1 file2 …; do tee < "$i" >(sha256sum) | md5sum ; done
Quindi devi aggiungere un codice aggiuntivo per contrassegnare il nome del file, perché viene inviato come input standard a md5sum
e sha256sum
.
for i in file1 file2 …; do sha256 "$i"& md5sum "$i"; done