A ver, no te confundas. md5, sha1, sha2, son métodos de encriptación de datos, si bien su función es generar una cadena, existe la posibilidad de que si dos personas suben una imagen llamada "perfil.png" tenga el mismo nombre.
Te recomiendo crear una carpeta por cada usuario que se registre, donde almacenes su foto y otras imágenes o documentos que necesites. O en su defecto, colocar esa SESSION de usuario como algun componente del nombre, también puedes usar rand() para sacar un numero aleatorio o la fecha y hora actual.
Posibilidades hay muchas.
Código PHP:
Ver original<?php
$ruta = "imagenes/" . date("YmdHis") . $_FILES['imagen']['name'];
?>
Esto puede ser una forma por ejemplo.