Для ключей распределенного хранилища я хочу использовать UUID v4, и System.Guid
.NET Framework дает мне именно это. Однако я не могу прямо сейчас проверить, дает ли Mono тот же v4? Есть ли автономный генератор v4 на C#/F#? Есть ли спецификация, в которой говорится, что .NET/Mono GUID всегда имеет версию 4? (гуглил, не нашел)
Кроме того, я хочу немного поработать с GUID v4. Учитывая, что это формат xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
, я хочу заменить 4 на собственный шестнадцатеричный номер. Мне нужно это, чтобы внедрить информацию об эпохе, когда мои GUID были сгенерированы в моей системе, и я знаю, что максимальное количество эпох никогда не достигнет HEX f
.
Вопрос в том, безопасно ли это и рассчитано на будущее? Знаете ли вы о каком-либо программном обеспечении, которое каким-либо образом проверяет Guids способом, отличным от «должно быть около 128 бит»? Я боюсь, что положить, например. 5 вместо 4 может что-то сломать, например. Тип столбца PostgreSQL uuid или в какой-то подобной ситуации. И я не могу проверить все случаи, когда это могло произойти. Я проверил все числа вместо 4 с System.Guid.Parse()
, и все работает нормально, но я не знаю, повезло ли это или по спецификации.