Mam to, co uważałem za całkiem proste pytanie. Używam tego kodu do generowania UUID SHA1 w Golang:Generowanie tego samego identyfikatora UUID SHA1 w golang i Javascriptu
namespace := uuid.Parse("b9cfdb9d-f741-4e1f-89ae-fac6b2a5d740")
sha := uuid.NewSHA1(namespace, []byte("something"))
fmt.Println(sha.String())
teraz chcę, aby wygenerować ten sam UUID w JavaScript, a ja pomyślałem, że byłoby tak proste, jak coś takiego:
var hash = CryptoJS.SHA1("b9cfdb9d-f741-4e1f-89ae-fac6b2a5d740" + "something")
// chomp the hash into a UUID string
Jednak mam poważne problemy. Wygląda na to, że funkcja uuid.Parse
w Golang działa pod kontrolą this parsing function, która przekształca przestrzeń nazw w 16-bajtową tablicę, więc nawet jeśli używam tego samego algorytmu SHA1 w JavaScript, nie otrzymuję tego samego wyniku.
Robiłem to samo w JS, ale jestem zdumiony.
Wszyscy inteligentni ludzie kryptografiści tutaj, którzy mogą mi pomóc?
Przepraszamy, po prostu dodano krótki opis. – Ronze
Czy możesz pokazać oba wyniki? –
@ArtjomB. Sprawdziłem znaczenie "parsowania" UUID. Wygląda na to, że usunie kreski, przekształci wartości i stworzy tablicę bajtów. Ronze Myślę, że możesz spróbować usunąć hasze, wykonać dekodowanie szesnastkowe, a następnie SHA1, ale nie jestem pewien. –