El título describe bastante bien lo que quiero preguntar, porque simplemente no puedo rodearlo con la cabeza. Entiendo los conceptos básicos de romper datos encriptados con el método de forzar la fuerza bruta en el que encripta los datos de muestra y luego los compara con el encriptado que desea descifrar. Sin embargo, no entiendo cómo funciona un cifrado sofisticado.
Daré este código que publiqué en otra pregunta, con riesgo porque no fue aceptado muy bien, pero solo para ilustrar el ejemplo más simple
function my_hash($data){
// Generate random salt
$salt = substr(md5(str_shuffle('0123456789abcdef')), 0, 5);
// Mask salt within the hash
$hash = substr(md5($data. $salt), 0, -5) . $salt;
return $hash;
}
function my_check($data, $hash){
$salt = substr($hash, -5);
return substr(md5($data. $salt), 0, -5) . $salt === $hash;
}
$hash = my_hash('qwerty');
¿Puede explicarme si tenía una superordenador y miles de millones de cadenas cifradas con esa función, cómo podría averiguar el algoritmo con el que se cifraron?
Editar: La pregunta sugerida no es responder a la pregunta que hice, es explicar cómo adivinar la función de hash que se usó, no cómo descifrarla y encontrar el algoritmo detrás de ella. Puedo decir fácilmente que es md5 cuando tiene 32 bytes de longitud y contiene los caracteres 0-9a-f, pero hay una diferencia entre el md5 simple y lo que publiqué arriba.