ホームページ > バックエンド開発 > PHPチュートリアル > PHP で有効な V4 UUID を生成するにはどうすればよいですか?

PHP で有効な V4 UUID を生成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-14 00:03:10
オリジナル
606 人が閲覧しました

How Can I Generate a Valid V4 UUID in PHP?

V4 UUID 用の有効な PHP 関数の生成

v4 UUID を生成するための PHP の既存の関数には、v4 標準の特定の形式への準拠を保証する点で欠陥があります。標準では、9 番目のオクテットの上位ビットと予約ビットは 10 である必要があると指定されています。

問題の認識

原因は、関数によるこれらのビットの一貫性のない処理です。これを修正するには、RFC 4122 セクション 4.4 に従って特定の変更を行う必要があります。

解決策

以下の洗練された関数は、必要な調整を実装しています。

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));
}
ログイン後にコピー

データはrandom_bytesを使用して生成され、ランダム性とセキュリティが保証されます。後続の 16 進変換では、vsprintf を利用して適切な形式を維持します。

PHP 5 とそれ以前の互換性

7.0 より前の PHP バージョンでは、random_bytes が利用できないため、代替実装が提供されています。

$data = openssl_random_pseudo_bytes(16, $strong);
// ensure the result is cryptographically strong
assert($data !== false && $strong);
ログイン後にコピー

追加メモ

暗号化を使用することが重要ですUUID の堅牢性を保証する、random_bytes や openssl_random_pseudo_bytes などの強力なランダム データ ジェネレーター。特定の要件がある場合は、ランダム データを生成するための代替方法を検討することを検討してください。

以上がPHP で有効な V4 UUID を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート