Se stai utilizzando l'output per l'hashing della password, allora la lunghezza dell'output:
- Deve essere nient'altro che la dimensione dell'output dell'hash nativo
- SHA-1 è 20 byte, SHA-224 è 28 byte, SHA-256 è 32 byte, SHA-384 è 48 byte, SHA-512 è 64 byte
- Non deve essere inferiore alla tua tolleranza al rischio. In pratica, direi che meno di 20 byte (dimensione dell'output nativo SHA-1) è troppo piccolo.
Se si sta utilizzando l'output direttamente come solo una singola chiave di crittografia:
- Dovrebbe essere uguale alla dimensione della chiave di crittografia che ti serve
- Idealmente non è altro che la dimensione dell'output dell'hash nativo (vedi sopra)
Se si utilizza l'output sia come chiave di crittografia e MAC, o in qualsiasi altro caso in cui si sta utilizzando l'output per più di uno scopo:
Il motivo per "non più della dimensione di output dell'hash nativo" è la RFC2898 sezione 5.2, nel Definizione PBKDF2, specifica che se vengono richiesti più byte di output (dkLen) rispetto alla funzione di hash nativa, esegui un conteggio completo per la prima dimensione hash nativa, quindi un altro conteggio completo per il secondo e continua finché non hai finito oppure devi troncare l'output perché il resto di ciò che ti serve è inferiore alla dimensione di output nativo.