/ / No nó JS, como converter um valor de hash como um uuid igual ao do Cast As Uniqueidentifier - node.js, tsql, uuid

No Node JS, como converter um valor de hash como um uuid igual ao Cast As Uniqueidentifier - node.js, tsql, uuid

Nós temos um processo de criação de uuid "s em TSQL usando o seguinte:

SELECT Cast( HASHBYTES("MD5", "some string") as uniqueidentifier)

Eu criei uma API no nó js, e eles querem que euser capaz de criar o mesmo identificador exclusivo de "alguma string". Isso é possível? Usando criptografia, posso obter o mesmo valor hexadecimal que o comando HASHBYTES (crypto.createHash("md5").update("some string").digest("hex")), mas eu não sei como eu iria convertê-lo para o mesmo uuid que o TSQL está retornando.

Eu acredito que o que eu quero é um uuid v3, mas eu nãosabe o que o namespace seria. Achei que talvez o SSMS estivesse usando algum valor específico para o servidor para criar o uuid, mas consegui obter o mesmo valor em três servidores diferentes, dois em nossa rede e outro em uma instância EC2 aleatória.

Eu estou entendendo mal algo muito básico sobre o uuid "s? Ou há algum namespace específico para o Microsoft SQL Server, consistente entre todos os servidores?

Bibliotecas de nós Eu verifiquei: uuid, uuid-1345, uuid-lib, guid

Eu também tentei a biblioteca águia, que parecefaça o que eu quiser, mas em SHA256. Eu peguei o código emprestado e mudei para o md5, mas então eu vi que tudo que a biblioteca está fazendo é pegar um hash e adicionar um 4 ou 8 em certos índices de caracteres.

Respostas:

0 para resposta № 1

Um amigo descobriu como o TSQL manipula o cast como uniqueidentifier. Eles apenas reorganizam os personagens do hash! Aqui está como você faria em Javascript:

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)

return x.toUpperCase () }

Eles parecem estar fazendo isso da mesma maneira toda vez (tentaram cerca de dez cordas diferentes). Bons tempos.