PHP での有効な v4 UUID の生成
PHP で有効な v4 UUID を生成するための正しい形式を決定するのは困難な場合があります。 UUID (Universally Unique Identifier) は特定のパターン「xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx」に従う必要があります。ここで、「y」は 8、9、A、または B のいずれかを表します。
既存の解決策と制限
試みられた解決策の 1 つは、UUID をコンポーネントに分割し、乱数を使用することです。各セクションの世代。ただし、「y」値を正しく設定できません。
関数の修正
この問題を修正するには、生成されたデータに特定のビット操作を行う必要があります。 。 RFC 4122 - セクション 4.4 によると、次のビットを変更する必要があります:
更新された関数
有効な v4 UUID を生成する更新された PHP 関数は次のとおりです。
function uuidv4() { $data = random_bytes(16); $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100 $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10 return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)); }
ランダムの生成データ
へ十分にランダムなデータを生成するには、openssl_random_pseudo_bytes() または random_bytes() (PHP 7 以降の場合) のいずれかを使用することをお勧めします。古い PHP バージョンの場合は、openssl_random_pseudo_bytes() を使用できます。
以上がPHP で有効な v4 UUID を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。