Это зависит от того, чего вы пытаетесь достичь.Вывод SHA1 является фактически случайным по отношению к входу (выход хорошей хеш-функции изменяется на половину своих битов на основе однобитового изменения на входе, а SHA1, хотя и не идеальный, довольно хорош), ивзяв 32-разрядное (в предположении 8 шестнадцатеричных) подмножество 160-разрядного вывода, вы уменьшите пространство вывода с 2 ^ 160 до 2 ^ 32 значений.При прочих равных условиях, которыми они никогда не являются, это значительно уменьшит сложность обнаружения коллизии.
Однако, если входные данные хэш-функции должны быть действительными URL-адресами, это значительно сокращает количество возможных входных данных.@rsp указывает на проблему дня рождения, но, учитывая это, я не уверен, насколько она применима, по крайней мере, в ее простой форме.Кроме того, это в значительной степени предполагает отсутствие других мер предосторожности.
Мне было бы более интересно узнать, почему вы это делаете.Это касается URL, которые пользователь должен будет запомнить и ввести?Если это так, добавление случайных шестнадцатеричных цифр, вероятно, является плохой идеей.Это URL или параметр URL, который будет просто передан программно?Тогда мне было бы наплевать на длину.В любом случае, возможно, есть лучшие способы сделать то, что вы пытаетесь достичь.