В настоящее время мы используем .NET Guid.NewGuid()
для генерации кодов активации и ключей API. Интересно, если это создает проблему безопасности, так как их алгоритм открыт.
.NET Guid использует Win32 CoCreateGuid
, и я не знаю его внутренних компонентов (возможно, MAC-адрес + метка времени?). Может ли кто-нибудь вывести второй GUID из первого, или он поразит его умными догадками, или случайность достаточно хороша, поэтому пространство поиска становится слишком большим?
При генерации случайных ключей возникает проблема коллизий, их необходимо дважды проверить перед добавлением в базу данных. Вот почему мы придерживаемся GUID, но я не уверен в их безопасности для этих целей.
Вот 4 последовательных выхода UUIDGEN:
c44dc549-5d92-4330-b451-b29a87848993
d56d4c8d-bfba-4b95-8332-e86d7f204c1c
63cdf958-9d5a-4b63-ae65-74e4237888ea
6fd09369-0fbd-456d-9c06-27fef4c8eca5
Вот 4 из них Guid.NewGuid()
:
0652b193-64c6-4c5e-ad06-9990e1ee3791
374b6313-34a0-4c28-b336-bb2ecd879d0f
3c5a345f-3865-4420-a62c-1cdfd2defed9
5b09d7dc-8546-4ccf-9c85-de0bf4f43bf0