다음을 통해 공유


Guid.NewGuid 메서드

정의

Guid 구조체의 새 인스턴스를 초기화합니다.

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

반환

새 GUID 개체입니다.

예제

다음 코드 예제에서는 두 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 된 는 와 같지 않음을 보장합니다 Guid.Empty.

Windows에서 이 함수는 CoCreateGuid 함수에 대한 호출을 래핑합니다. 생성된 GUID에는 122비트 강력한 엔트로피가 포함되어 있습니다.

.NET 6부터 비 Windows 플랫폼에서 이 함수는 OS의 기본 암호화 보안 CSPRNG(의사 난수 생성기)를 호출하여 122비트의 강력한 엔트로피를 생성합니다. 이전 버전의 .NET에서는 엔트로피가 CSPRNG에 의해 생성되도록 보장되지 않습니다.

애플리케이션은 암호화 목적으로 NewGuid 메서드를 사용하지 않는 것이 좋습니다. 첫째, 버전 4 UUID에는 부분적으로 예측 가능한 비트 패턴이 있으므로 NewGuid 함수는 적절한 PRF(암호화 의사 임의 함수)로 사용할 수 없습니다. NewGuid의 출력이 적절한 PRF에서 입력을 생성해야 하는 암호화 구성 요소에 제공되면 암호화 구성 요소가 보안 속성을 유지 관리하지 못할 수 있습니다. 둘째, NewGuid 는 플랫폼에 관계없이 최대 122비트 엔트로피를 활용합니다. 일부 암호화 구성 요소는 정책의 문제로 입력에 대한 최소 엔트로피 수준을 설정합니다. 이러한 정책은 종종 최소 엔트로피 수준을 128비트 이상으로 설정합니다. NewGuid의 출력을 이러한 루틴에 전달하면 정책을 위반할 수 있습니다.

애플리케이션에 암호화 목적으로 임의 데이터가 필요한 경우 클래스에서 정적 메서드를 사용하는 것이 RandomNumberGenerator 좋습니다. 해당 클래스는 암호화 사용에 적합한 난수 생성기를 제공합니다.

적용 대상