2017-05-17 1 views
0

으로 TSQL의 캐스트에 UUID 동일한 같은 해시 값을 캐스팅하는 방법을 우리는 다음과 같은 사용 TSQL에서 UUID 년대를 만드는 프로세스를 , 그들은 '어떤 문자열'에서 동일한 고유 한 식별자를 만들 수 있기를 원합니다. 그게 가능하니? 암호화를 사용하면 HASHBYTES 명령 (crypto.createHash('md5').update('some string').digest("hex"))과 동일한 16 진수 값을 얻을 수 있지만 TSQL이 반환하는 것과 동일한 UUID로 변환하는 방법을 모르겠습니다., 고유 식별자

내가 원하는 것은 v3의 uuid이지만 나는 네임 스페이스가 무엇인지 알지 못합니다. 아마 SSMS가 서버에 특정 값을 사용하여 uuid를 작성한다고 생각했지만 네트워크에 2 개, 무작위로 EC2 인스턴스에 대해 세 개의 다른 서버에서 동일한 값을 얻을 수있었습니다.

저는 uuid에 대해 아주 기본적인 것을 오해하고 있습니까? 아니면 Microsoft SQL Server 고유의 일부 네임 스페이스가 있습니까? 모든 서버간에 일관성이 있습니까? 내가 체크 아웃 한

노드 라이브러리 : UUID, UUID-1345, UUID-LIB, GUID

나는 또한 내가하지만, SHA256에서 원하는 것을 할 것 같습니다 aguid 라이브러리를 시도했습니다. 코드를 빌려 md5로 바꿨지 만 라이브러리가 수행하는 모든 작업이 해시를 가져오고 특정 문자 인덱스에 4 또는 8을 추가하는 것으로 나타났습니다.

답변

0

친구가 TSQL이 고유 식별자로 캐스팅을 처리하는 방법을 알아 냈습니다. 그들은 단지 해시 문자를 재배치합니다! 다음은 자바 스크립트에서 그것을 할 거라고 방법은 다음과 같습니다

var castAsUuid = function(str){ var x = str.substring(6, 8) + str.substring(4, 6) + str.substring(2, 4) + str.substring(0, 2) + '-' + str.substring(10, 12) + str.substring(8, 10) + '-' + str.substring(14, 16) + str.substring(12, 14) + '-' + str.substring(16, 20) + '-' + str.substring(20, 32) 

반환 x.toUpperCase은() 가}

그들은 그것을 같은 방식으로 (약 10 개의 다른 문자열 시도)마다 일을 할 것 같다. 좋은 시간.