英語で読む

次の方法で共有


Guid.NewGuid メソッド

定義

Guid 構造体の新しいインスタンスを初期化します。

public static Guid NewGuid ();

戻り値

新しい GUID オブジェクト。

次のコード例では、2 つの Guid オブジェクトの値を作成して表示します。

// Create and display the value of two GUIDs.
Guid g = Guid.NewGuid();
Console.WriteLine(g);
Console.WriteLine(Guid.NewGuid());

// This code example produces a result similar to the following:

// 0f8fad5b-d9cb-469f-a165-70867728950e
// 7c9e6679-7425-40de-944b-e07fc1f90ae7

注釈

これは、 を呼び出して新しい Guidを取得できる便利なメソッドですstatic。 メソッドは、 RFC 4122、Sec. 4.4 で説明されているように、バージョン 4 ユニバーサル一意識別子 (UUID) を作成します。 返される は、 と等Guid.Emptyしくないことが保証されますGuid

Windows では、この関数は CoCreateGuid 関数の呼び出しをラップします。 生成された GUID には、122 ビットの強力なエントロピが含まれています。

Windows 以外のプラットフォームでは、.NET 6 以降、この関数は OS の基になる暗号で保護された擬似乱数ジェネレーター (CSPRNG) を呼び出して、122 ビットの強力なエントロピを生成します。 以前のバージョンの .NET では、エントロピが CSPRNG によって生成されるとは限りません。

アプリケーションでは、暗号化の目的で NewGuid メソッドを使用しないことをお勧めします。 まず、バージョン 4 UUID には部分的に予測可能なビット パターンがあるため、 NewGuid 関数は適切な暗号化擬似ランダム関数 (PRF) として機能できません。 NewGuid の出力が、適切な PRF によって入力を生成する必要がある暗号化コンポーネントに渡された場合、暗号化コンポーネントはセキュリティ プロパティを維持できない可能性があります。 次 に、NewGuid は、プラットフォームに関係なく、最大 122 ビットのエントロピを利用します。 一部の暗号化コンポーネントでは、ポリシーの問題として、入力に最小エントロピ レベルが設定されます。 このようなポリシーは、多くの場合、最小エントロピ レベルを 128 ビット以上に設定します。 このようなルーチンに NewGuid の出力を渡すと、そのポリシーに違反する可能性があります。

暗号化のためにアプリケーションでランダム なデータが必要な場合は、 クラスで RandomNumberGenerator 静的メソッドを使用することを検討してください。 このクラスは、暗号化の使用に適した乱数ジェネレーターを提供します。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0