Sto guardando il codice di una particolare applicazione web che gestisce i caricamenti di file. Per qualche ragione, invece di usare la funzione di hash crittografica (SHA-256 in questo caso), ne ricavano un ID e lo usano ovunque, per identificare i file in modo univoco.
I passaggi coinvolti sono i seguenti:
- Calcola la somma SHA-256 del file richiesto.
- Prendi un massimo di 3 caratteri per ogni iterazione e trattalo come una stringa esadecimale, convertilo nella sua notazione base62 equivalente (cioè
0-9a-zA-Z => 0 - 62
). - Aggiungi queste stringhe in questo ordine e ottieni "ID".
Ad esempio:
hash (file) = 26ba0a896923d2de4cad532a3f05da725d9cc08d371eaf96905f5bbc1901b56f
26b -------> 9Z
a0a -------> Fs
896 -------> zs
923 -------> BJ
d2d -------> Sp
e4c -------> X2
ad5 -------> IJ
32a -------> d4
3f0 -------> gg
5da -------> oa
725 -------> tv
d9c -------> Uc
c08 -------> NG
d37 -------> Sz
1ea -------> 7U
f96 -------> 12m
905 -------> Bf
f5b -------> 11p
bc1 -------> Mx
901 -------> Bb
b56 -------> KO
f -------> f
ID = 9ZFszsBJSpX2IJd4ggoatvUcNGSz7U12mBf11pMxBbKOf
Per me, questo non sembra essere un modo sicuro per troncare l'hash a tutti. In particolare, mi sembra che la probabilità di collisioni aumenti in questo modo. *
Le operazioni di cui sopra rappresentano un problema o non interferiscono con i punti di forza crittografici di SHA256?
* Le resistenze delle funzioni SHA-2 possono impedire a un utente malintenzionato di sfruttarlo. Tuttavia, sono solo preoccupato per la premessa della funzione stessa.