Primero, una función hash tiene una entrada : hash algo . GUID (en realidad UUID ) no tiene ninguna entrada. Para generar "identificadores únicos" con una función hash, simplemente no usas una función hash; tienes que definir lo que realmente hash.
Hay varios métodos estándar para generar UUID; todos estos métodos tienen como objetivo lograr la "singularidad" de los identificadores generados. El método 3 utiliza la función de hash MD5: usted genera el UUID al copiar algunos datos que ya son inherentemente únicos en todo el mundo (por ejemplo, una URL), pero más largos que los 16 bytes de un UUID. Este método se asemeja mucho a lo que sugieres, excepto que define claramente lo que está descifrado (o al menos, indica en palabras sencillas que cuando hash, hash algo y tu UUID no será más único que lo que hash). El método 5 es como el método 3, pero con SHA-1 en lugar de MD5 (la salida se trunca a 128 bits).
Otros métodos utilizan elementos físicos o de configuración de la máquina local (por ejemplo, la dirección MAC y la hora actual para el método 1). La mayoría de los métodos son "cooperativos": aseguran la singularidad, pero se pueden predecir nuevos valores UUID. Para muchos protocolos relacionados con la seguridad, cuando necesita una ID única, realmente necesita una ID que no coincida con la ID anterior (o que lo haga solo con una probabilidad insignificante) los atacantes no pueden predecir y ; para eso, necesita el "método 4": el UUID de 128 bits contiene 122 bits aleatorios, generados a partir de un PRNG criptográficamente fuerte . Este método proporcionará identificadores "fuertemente únicos" y es mejor que cualquier construcción casera.