Алгоритм преобразования строки в GUID

Я пытаюсь создать функцию, которая принимает произвольную строку в качестве входных данных и создает GUID на основе этой строки. Формат GUID должен быть в идеале GUID структура из objbase.h, но это не так важно. Важно то, что функция является детерминированной, но всегда (или достаточно близко, чтобы всегда) создает разные GUID для разных строк.

Какой алгоритм я могу использовать для этого? Я думал о битовых операциях с содержимым строки, но я был бы признателен за некоторые указания.

1

Решение

Как насчет вычисления MD5-хеша строки и обработки его, как если бы это был GUID? Идентификаторы GUID и MD5 являются 128-битными значениями.

2

Другие решения

Вы можете хешировать строку, а затем использовать первые 16 байтов хеша для создания GUID (http://msdn.microsoft.com/en-us/library/90ck37x3.aspx)

1

Проверьте спецификации для UUID версии 3 и 5:

  1. http://en.wikipedia.org/wiki/Uuid#Version_3_.28MD5_hash.29
  2. http://en.wikipedia.org/wiki/Uuid#Version_5_.28SHA-1_hash.29

По сути, вы вычисляете MD5 (или SHA-1) вашей строки и дословно сохраняете результаты в 128-битном UUID. Для SHA-1 вам нужно усечь результат, так как SHA-1 возвращает 160 бит.

1
По вопросам рекламы [email protected]