#author("2022-04-29T23:34:00+00:00","","") #author("2022-05-11T10:46:40+09:00","","") #topicpath /////////////////////////////////////////////////////////////////////////////// * 目次 [#wed82848] #contents(); /////////////////////////////////////////////////////////////////////////////// * UUID [#m7634116] - 一意なものとして扱うことを意図した 128bit の ID - 分散したシステムで統制なしに生成出来るものとして設計されている //============================================================================= ** version [#b7feda06] - version は、16進数で表記された UUID の場合、下記の M の位置にバージョン番号が示される xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx - version のバリアントがある場合、上記 N にその情報が示される //----------------------------------------------------------------------------- *** version 1 [#jadd332a] -- 時刻と MAC address に基づく //----------------------------------------------------------------------------- *** version 2 [#z46e54c1] //----------------------------------------------------------------------------- *** version 3/5 [#u93b1c6a] - version 3 では MD5, version 5 では SHA1 を使用する //----------------------------------------------------------------------------- *** version 4 [#d1a1ff69] - 乱数を使用する /////////////////////////////////////////////////////////////////////////////// * 実装 [#d2ea0c39] //============================================================================= ** uuidgen [#uuidgen] - debian では、 uuid-runtime パッケージに含まれる。 - version 2.36.1 では、 UUID のバージョンを指定する Interface にはなっていない - option |~option |~description |~remark | |-r, --random |乱数ベースの UUID を生成 |UUID version4 を生成。uuidgen ver2.36.1 の default | |-t, --time |時間ベースの UUID を生成 |UUID version1 を生成 | |-n, --namespace <ns> |<ns> に基づく hash で UUID を生成 | | |-N, --name <name> |<name> に基づく hash で UUID を生成 | | |-m, --md5 |MD5 による hash で UUID を生成 | | |-s, --sha1 |SHA1 によるUUID を生成 | | |-x, --hex |名前を 16進数文字列として解釈する | | //============================================================================= ** uuid [#uuid] - debian では uuid パッケージに含まれる。 - option |~option |~description |~remark | |-v <version> |UUID のバージョンを指定する |default は 1 | |-F <format> |format を指定する | | |~|BIN : network byte order の2進数で出力| | |~|STR : ASCII 文字列で出力 |default | |~|SIV : 単一整数値で出力 |区切りの "-" を含まない書式 | |-o <file> |<file> に出力する | | /////////////////////////////////////////////////////////////////////////////// * coding [#u9eb3202] //============================================================================= ** UUID を格納する型 [#y6270a2a] - uuid_t -- 16bit バイナリで格納する。 -- 実体は unsigned char の配列となっており、ビットシフト演算は使えない。 <uuid/uuid.h>: typedef unsigned char uuid_t[16]; - uuid_string_t -- UUID を文字列で格納する -- 実装系によっては定義がないので要注意。