GUID, 30 символов случайной строки

Мне нужно создать уникальную строку длиной 30 символов. Сначала я собирался создать GUID и просто удалить первые два символа.

Guid.NewGuid().ToString("N").Substring(2);

будет ли удаление двух первых символов иметь существенное влияние на"уникальность"? Это то, о чем я должен беспокоиться?

есть ли лучший способ генерации случайной 30-символьной строки, которая будет гарантированно уникальной?

3 ответов


удаление двух шестнадцатеричных символов или эквивалентно 8 бит из GUID сделает его менее уникальным, но 120 бит по-прежнему делают довольно хорошее уникальное значение. Если вы не хотите генерировать миллионы идентификаторов каждую секунду, следует безопасно удалить некоторые биты из метки времени и uniquifier без риска столкновения. См., например, Википедию для структура GUIDs.

альтернативным решением было бы кодировать GUID в в base64 или что-то например, если вы не ограничены только шестнадцатеричными символами. 128 бит, закодированных в Base64, дают строку длиной 24. Затем вы даже можете добавить еще 6 случайных символов, чтобы заполнить строку до 30 символов, что делает ее еще более уникальной.


усечение GUID теряет уникальность. Чтобы понять, почему вы должны понимать, как создается GUID. Он состоит из нескольких частей:

  • 60 битов метки
  • 48 бит идентификатора компьютера
  • 14 бит uniquifier
  • 6 бит фиксированной

отбрасывая первые два символа, вы отбрасываете 8 наиболее значимых битов части метки времени. в этой статье объясняет это хорошо и опасность усечения GUIDs. Это также объясняет, как можно использовать тот же метод, используемый в GUID для создания уникальных идентификаторов, которые не являются глобально уникальными, но будут уникальными для более ограниченных обстоятельств.


Как говорили другие ответчики до меня, если вы просто удалите два символа из GUID, то он больше не будет уникальным.

но есть и другой способ: можно сократить GUID до 20 символов без потери информации или уникальности с помощью кодировки ASCII.

проверьте это сообщение в блоге Джеффа Этвуда:
кодирование ужас: оснащение нашей ASCII брони