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となる。
enjoy :)
*1:自分の環境で正しく出力されることを期待しているので、入力チェックなどが無い