uuid_generate, uuid_generate_random, uuid_generate_time -
他と重ならない UUID
値を新しく作成する
#include <uuid/uuid.h>
void uuid_generate(uuid_t out);
void uuid_generate_random(uuid_t out);
void uuid_generate_time(uuid_t out);
uuid_generate 関数は新しい UUID
(universally unique identifier:
絶対に他とは重ならない識別子)
を生成する。 UUID
の生成には、
/dev/urandom
のような質の良い乱数発生機構が利用できる場合はそれを利用する。
できない場合には、
uuid_generate
は別のアルゴリズムを用いる。この場合は現在時刻、
ローカルなイーサネットの
MAC
アドレスが取得できればその値、
および擬似乱数発生機構から生成された乱数が用いられる。
uuid_generate_random
関数は、質の良い乱数発生機構
(例えば
/dev/urandom)
が利用できない場合でも、完全にランダムベースの
(つまり時刻や MAC
アドレスを使わない) UUID
フォーマットを作りたい場合に用いる。
この場合は擬似乱数発生機構が代わりに用いられる。
擬似乱数発生機構を利用すると、このように生成された
UUID の
一意性は劣化するかもしれないことに注意すること。
uuid_generata_time
関数は、代替アルゴリズムを使いたい場合に用いる。
これは現在時刻と
(あれば)
イーサネットの MAC
アドレスを用いる。
このアルゴリズムはかつて
UUID
生成方法のデフォルトであったが、
イーサネットの MAC
アドレスを用いるので、いつどこで
UUID が生成
されたかの情報がリークしてしまう。これはアプリケーションによっては
プライバシーの問題を起こすことがあるので、
uuid_generate
関数は質の高い乱数発生機構が利用できない場合に限って
このアルゴリズムを用いるようになった。
UUID は 16 バイト (128 ビット)
長で、およそ 3.4x10^38 この
ユニークな値を与える
(Carl Segan の
Cosmos
によれば、全宇宙にある素粒子の個数は
10^80 だそうである)。
新たに作られた UUID
は、ローカルなシステムや外部のシステムによって
過去または未来に生成された/される
UUID
のいずれとも異なると
考えることができる。
返り値¶
新たに生成された UUID
が、
out
の指すメモリ位置に返される。
OSF DCE 1.1
Theodore Y. Ts'o
入手方法¶
http://e2fsprogs.sourceforge.net/
関連項目¶
uuid(3),
uuidgen(1),
uuid_clear(3),
uuid_compare(3),
uuid_copy(3),
uuid_is_null(3),
uuid_parse(3),
uuid_time(3),
uuid_unparse(3)