2017-04-15 8 views
0

입력을 기반으로 UUID의 처음 몇 바이트를 제어 할 수있는 UUID를 생성하는 방법이 있습니까? 나는 다음처럼 호출하면입력에 따라 처음 몇 바이트가 고정되는 UUID를 생성하는 방법이 있습니까?

string generateUUID(string input); 

:

예를 들어, 내가 좋아하는 기능 싶습니다

따라서

generateUUID('a') = 00000001-6f42-4d44-acc4-fda717886945 
generateUUID('a') = 00000001-9279-48c1-8695-ff088504b800 
generateUUID('a') = 00000001-2a6d-4cba-85d5-aabe94bdb5bd 

generateUUID('b') = 00000002-2a6d-4cba-85d5-aabe94bdb5bd 
generateUUID('b') = 00000002-b46f-4427-83d5-f1244a9f1102 
generateUUID('b') = 00000002-5de1-4b7c-94be-5bf07a749e82 

등을 처음 8 자하는 경우 uuid의 값이 00000001이면, 'a'가 입력 값이라는 것을 압니다.

t와 같습니다. 그의 가능한?

+0

왜 8 비트 값을 기준으로 8 바이트를 변경해야합니까? 이것은 심각하게 낭비이며, 별개의 UUID의 공간을 상당히 줄입니다. 왜이 일을해야한다고 생각하니? – EJP

+0

답변 해 주셔서 감사합니다. 나는 다른 어떤 정보도없이 uuid의 창안자를 확인해야하며, uuid의 품질에 영향을 미치지 않으면 서 이와 같은 것이 가능한지 알아 내려고하고있다. – Ste

답변

2

UUID.randomUUID()과 같이 일반적으로 UUID를 생성 한 다음 UUID.toString()으로 문자열로 변환 한 다음 원하는대로 처음 8자를 바꿉니다.

+0

좋습니다. 단순한. 그러나이 작업을 수행하면 UUID 충돌 위험이 2^N 씩 증가한다는 것에 주목할 필요가 있습니다. 여기서 N은 사용자가 훔치는 비트 수입니다. 이 경우 N은 24입니다. –

+0

답장을 보내 주셔서 감사합니다. N은 어느 시점에서 중요하게됩니까? 예를 들어 처음 2 ~ 3 문자 만 사용하는 경우 충돌 확률이 중요하지 않습니까? – Ste

0

UUID에는 public static UUID fromString (String name) 메서드가 있습니다. 필요한 것입니다

+0

그러나 적절한 속성을 사용하여 이름을 어떻게 생성합니까? –

+0

이 메서드는 결정적입니다. 나는 OP가 여전히 무작위를 원한다고 생각합니다. – sturcotte06