Estoy viendo el código de una aplicación web en particular que maneja las cargas de archivos. Por alguna razón, en lugar de usar la función criptográfica hash (SHA-256 en este caso), derivan una ID de ella, y la usan en todas partes, para identificar los archivos de manera única.
Los pasos involucrados son los siguientes:
- Calcule la suma SHA-256 del archivo requerido.
- Tome un máximo de 3 caracteres por iteración y, tratándolo como una cadena hexadecimal, conviértalo a su notación base62 equivalente (es decir,
0-9a-zA-Z => 0 - 62
). - Agregue estas cadenas en ese orden y obtenga la "ID".
Por ejemplo:
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
Para mí, esto no parece ser una forma segura de truncar el hash. En particular, me parece que la probabilidad de colisiones aumenta de esta manera. *
¿Las operaciones anteriores plantean un problema o no interfieren con las fortalezas criptográficas de SHA256?
* Las resistencias de las funciones SHA-2 pueden evitar que un atacante explote esto. Sin embargo, solo me preocupa la premisa de la función en sí.