MachineKey.Protect(Byte[], String[]) 메서드

정의

암호화하거나 서명하여 지정된 데이터를 보호합니다.

public:
 static cli::array <System::Byte> ^ Protect(cli::array <System::Byte> ^ userData, ... cli::array <System::String ^> ^ purposes);
public static byte[] Protect (byte[] userData, params string[] purposes);
static member Protect : byte[] * string[] -> byte[]
Public Shared Function Protect (userData As Byte(), ParamArray purposes As String()) As Byte()

매개 변수

userData
Byte[]

보호할 데이터입니다. 이 데이터는 일반 텍스트로 전달됩니다.

purposes
String[]

대이터에 대한 용도의 목록 이 값을 지정한 경우, 반환된 암호화 텍스트의 암호를 해독하기 위해 Unprotect(Byte[], String[]) 메서드로 같은 목록을 전달해야 합니다.

반환

Byte[]

암호화 텍스트 데이터입니다.

예외

userData 매개 변수가 null인 경우

purposes 배열에 공백 전용 항목이 하나 이상 있을 경우

설명

이 메서드는 메서드를 Encode 대체합니다. 이 메서드를 사용하려면 호출자가 일반 텍스트 데이터를 암호화, 서명 또는 둘 다 사용해야 하는지를 지정해야 합니다. 이 메서드는 Protect 적절한 작업을 수행하고 데이터를 안전하게 보호합니다. 이 메서드에서 생성된 암호 텍스트 데이터는 메서드에서만 해독 Unprotect 할 수 있습니다.

매개 purposes 변수는 암호화를 특정 용도로 잠글 수 있는 이유의 선택적 목록입니다. 이 매개 변수를 사용 하면 애플리케이션 내의 다른 하위 시스템에서 수행 하는 암호화 작업을 격리할 수 있습니다. 악성 클라이언트 해야 하나의 하위 시스템의 결과 가져올 수 없습니다 Protect 메서드 및 다른 하위 시스템에 입력으로 피드 Unprotect 메서드를 애플리케이션 보안을 손상 시킬 수 있습니다. 매개 변수를 purposes 사용하면 보호된 데이터를 원래 생성한 구성 요소에서만 사용할 수 있습니다. 애플리케이션 해야 각 하위 시스템에서 사용 하는 고유한 purposes 목록입니다.

예를 들어 인증 토큰을 보호하거나 보호 해제하려면 다음 예제와 같은 코드를 사용하여 메서드를 호출할 수 있습니다.

MachineKey.Protect(..., "Authentication token");  
MachineKey.Unprotect(..., "Authentication token");  
MachineKey.Protect(..., "Authentication token")  
MachineKey.Unprotect(..., "Authentication token")  

애플리케이션에서 동적으로 생성할 수는 purposes 매개 변수입니다. 이 경우 고정 값(예: " "Username: + 사용자 이름)을 사용하여 사용자가 제공한 값 접두사로 시스템의 다른 부분에서 사용하는 토큰과 일치하는 악의적인 클라이언트 생성 입력의 위험을 최소화합니다. 동적으로 생성된 모든 문자열은 고정 문자열 후에 와야 합니다. 예를 들어 특정 사용자에 연결된 프라이빗 메시지를 보호하거나 보호 해제하려면 다음 예제와 같은 코드를 사용합니다.

MachineKey.Protect(..., "Private message", "Recipient: " + username);  
MachineKey.Unprotect(..., "Private message", "Recipient: " + username);  
MachineKey.Protect(..., "Private message", "Recipient: " + username)  
MachineKey.Unprotect(..., "Private message", "Recipient: " + username)  

메서드가 Unprotect 호출될 때 매개 변수에 purposes 제공된 값은 메서드에 제공된 Protect 값과 동일해야 합니다. 그렇지 않으면 예외로 작업이 실패합니다 CryptographicException .

속성이 옵션으로 MachineKeyCompatibilityMode.Framework45 설정 Framework45 되지 않은 경우에도 MachineKeySection.CompatibilityMode 이 메서드에 필요한 구성 설정이 필요합니다.

적용 대상