すなばいじり

はてなブログを使って、トンピーを揃えるまで止めないブログ。ふっくらかわいい。

UUID Version5 を JavaScript で生成する

Gesoage(3)から stat.ink へデータをアップロードするために UUID のバージョン5を生成しなければならなかったので、書いたやつ。

RFC 4122 には大体準拠*1しているので、どのように動いているかを確認するには良いと思うやつ。

 

やっている事

文字列の名前空間(これ自体がUUID。この概念が大事)をUint8Arrayに入れ、同じくUint8Arrayに入れたデータを結合する。
その後 SHA-1 のハッシュを生成して、UUID Ver5 のルールに合わせたデータ(ハッシュが入ったUint8Arrayの7番目と9番目、0から始まる配列の番号では6と8)を上書きする。
UUIDとして必要な部分(16オクテット)をhexとして取り出す(0~fまでの32文字)。
最後にハイフンを良い感じに付けるとUUIDとなる。

 

gist.github.com

 

enjoy :)

 

 

*1:自分の環境で正しく出力されることを期待しているので、入力チェックなどが無い