次の方法で共有


Guid.NewGuid メソッド

定義

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

public:
 static Guid NewGuid();
public static Guid NewGuid ();
static member NewGuid : unit -> Guid
Public Shared Function NewGuid () As Guid

戻り値

新しい 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
open System

// Create and display the value of two GUIDs.
let g = Guid.NewGuid()
printfn $"{g}"
printfn $"{Guid.NewGuid()}"

// This code example produces a result similar to the following:
//     0f8fad5b-d9cb-469f-a165-70867728950e
//     7c9e6679-7425-40de-944b-e07fc1f90ae7
' This code example demonstrates the Guid.NewGuid() method.
Class Sample
    Public Shared Sub Main()
        Dim g As Guid
        ' Create and display the value of two GUIDs.
        g = Guid.NewGuid()
        Console.WriteLine(g)
        Console.WriteLine(Guid.NewGuid())
    End Sub
End Class
'
'This code example produces the following results:
'
'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 静的メソッドを使用することを検討してください。 このクラスは、暗号化の使用に適した乱数ジェネレーターを提供します。

適用対象