In poche parole, vuoi massimizzare la quantità di entropia per una determinata lunghezza di dati, quando esegui la maggior parte delle attività crittografiche.
Hai (al massimo) 16 byte di entropia nel tuo GUID - probabilmente meno (alcuni dei bit sono deterministici), ma possiamo ignorare quel dettaglio per la discussione corrente. Quando si usa la rappresentazione del byte [] del GUID come sale, si hanno 16 byte di dati. Questo è al massimo 16 byte di entropia / 16 byte di dati = 1 byte di entropia per byte di dati, assumendo un GUID completamente casuale. Supponiamo ora di utilizzare la rappresentazione della stringa. Sono 36 byte di dati, ma ancora al massimo 16 byte di entropia. Ciò si traduce in meno della metà dell'entropia per byte di dati (circa un rapporto di entropia / dati di 0,44 rispetto al byte compatto []), che è problematico per alcuni algoritmi di hashing.
Quando potrebbe apparire?
Per fare un esempio forzato (appena in cima alla mia testa - in realtà non raccomanderei di farlo), considera bcrypt. bcrypt è un algoritmo di hashing della password che, per ragioni tecniche, limita la password a 72 byte . Comprende il proprio sale, ma supponiamo, a ragion veduta, che non ti fidi del suo sale (di nuovo, questo non è un consiglio, solo un esempio).
Quindi, decidi di prefisso la password dell'utente con un GUID, prima di inserirla in bcrypt. Se hai utilizzato la versione byte [], questo riduce il limite superiore effettivo della lunghezza della password di 16 byte. Quindi, l'utente può fornire una password di 56 byte, al massimo. Va bene - è ancora più di 50 caratteri ASCII, che è una lunghezza comune che le persone usano quando hanno un gestore di password e sono un po 'paranoici.
Ora, supponiamo che tu abbia usato la versione della stringa. Hai ancora la stessa quantità di entropia, ma ora mangi più di 36 byte che l'utente potrebbe aver utilizzato per estrarre la password. Al momento sono bloccati con una password da 36 byte al massimo.
E questo è solo un esempio fuori dalla mia testa; Sono sicuro che ci sono altri casi in cui l'utilizzo della versione di stringa potrebbe farti male.