Depende de lo que está tratando de lograr. La salida de SHA1 es efectivamente aleatoria con respecto a la entrada (la salida de una buena función hash cambia en la mitad de sus bits en base a un cambio de un bit en la entrada, y SHA1, aunque no es perfecto, es bastante buena), y tomando un subconjunto de 32 bits (suponiendo 8 dígitos hexadecimales) de la salida de 160 bits, se reduce el espacio de salida de 2^160 a 2^32 valores. Si todo sigue igual, lo que nunca ocurre, esto reduciría significativamente la dificultad de encontrar una colisión.
Sin embargo, si la entrada de la función hash debe ser una URL válida, eso reduce significativamente el número de entradas posibles. @rsp señala el problema del cumpleaños, pero dado esto, no estoy seguro de qué tan aplicable sea, al menos en su forma simple. Además, supone en gran medida que no hay otras precauciones en su lugar.
Estaría más interesado en por qué estás haciendo esto. ¿Se trata de URL que el usuario deberá recordar y escribir? Si es así, hacer tachuelas en un grupo de dígitos hexadecimales aleatorios probablemente sea una mala idea. ¿Es un parámetro de URL o URL que se pasará de forma programática? Entonces, no me importaría mucho la longitud. De cualquier manera, hay probablemente mejores formas de hacer lo que estás tratando de lograr.
http://stackoverflow.com/questions/3060259/do-cryptographic-hashes-provide-really-unique-results puede ayudar aquí. – VonC