RSAPKCS1KeyExchangeFormatter.CreateKeyExchange 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
암호화된 키 교환 데이터를 만듭니다.
오버로드
CreateKeyExchange(Byte[]) |
지정된 입력 데이터에서 암호화된 키 교환 데이터를 만듭니다. |
CreateKeyExchange(Byte[], Type) |
지정된 입력 데이터에서 암호화된 키 교환 데이터를 만듭니다. |
CreateKeyExchange(Byte[])
지정된 입력 데이터에서 암호화된 키 교환 데이터를 만듭니다.
public:
override cli::array <System::Byte> ^ CreateKeyExchange(cli::array <System::Byte> ^ rgbData);
public override byte[] CreateKeyExchange (byte[] rgbData);
override this.CreateKeyExchange : byte[] -> byte[]
Public Overrides Function CreateKeyExchange (rgbData As Byte()) As Byte()
매개 변수
- rgbData
- Byte[]
키 교환 시 전달할 비밀 정보입니다.
반환
지정된 수신자에게 보낼 암호화된 키 교환 데이터입니다.
예외
rgbData
가 너무 큽니다.
이때 키는 null
입니다.
설명
데이터를 암호화 하는 데 퍼블릭 키에 해당 프라이빗 키 보유자가만이 데이터를 해석할 수 있습니다. 이렇게 하면 의도 한 받는 사람만 비밀 정보에 액세스할 수 있는지 확인 합니다.
추가 정보
적용 대상
CreateKeyExchange(Byte[], Type)
지정된 입력 데이터에서 암호화된 키 교환 데이터를 만듭니다.
public:
override cli::array <System::Byte> ^ CreateKeyExchange(cli::array <System::Byte> ^ rgbData, Type ^ symAlgType);
public override byte[] CreateKeyExchange (byte[] rgbData, Type? symAlgType);
public override byte[] CreateKeyExchange (byte[] rgbData, Type symAlgType);
override this.CreateKeyExchange : byte[] * Type -> byte[]
Public Overrides Function CreateKeyExchange (rgbData As Byte(), symAlgType As Type) As Byte()
매개 변수
- rgbData
- Byte[]
키 교환 시 전달할 비밀 정보입니다.
- symAlgType
- Type
이 매개 변수는 현재 버전에서 사용되지 않습니다.
반환
지정된 수신자에게 보낼 암호화된 키 교환 데이터입니다.
예제
다음 예제에서는 사용 하는 방법의 RSAPKCS1KeyExchangeFormatter.CreateKeyExchange 메시지 받는 사람에 대 한 교환 키를 만드는 방법. 이 코드 예제는에 대해 제공 된 큰 예제의 일부는 RSAPKCS1KeyExchangeFormatter 클래스입니다.
private static void Send(RSA key, string secretMessage, out byte[] iv, out byte[] encryptedSessionKey, out byte[] encryptedMessage)
{
using (Aes aes = new AesCryptoServiceProvider())
{
iv = aes.IV;
// Encrypt the session key
RSAPKCS1KeyExchangeFormatter keyFormatter = new RSAPKCS1KeyExchangeFormatter(key);
encryptedSessionKey = keyFormatter.CreateKeyExchange(aes.Key, typeof(Aes));
// Encrypt the message
using (MemoryStream ciphertext = new MemoryStream())
using (CryptoStream cs = new CryptoStream(ciphertext, aes.CreateEncryptor(), CryptoStreamMode.Write))
{
byte[] plaintextMessage = Encoding.UTF8.GetBytes(secretMessage);
cs.Write(plaintextMessage, 0, plaintextMessage.Length);
cs.Close();
encryptedMessage = ciphertext.ToArray();
}
}
}
Private Shared Sub Send(ByVal key As RSA, ByVal secretMessage As String, ByRef iv() As Byte, ByRef encryptedSessionKey() As Byte, ByRef encryptedMessage() As Byte)
Dim aes = New AesCryptoServiceProvider()
Try
iv = aes.IV
' Encrypt the session key
Dim keyFormatter As New RSAPKCS1KeyExchangeFormatter(key)
encryptedSessionKey = keyFormatter.CreateKeyExchange(aes.Key, GetType(Aes))
' Encrypt the message
Dim ciphertext As New MemoryStream()
Try
Dim cs As New CryptoStream(ciphertext, aes.CreateEncryptor(), CryptoStreamMode.Write)
Try
Dim plaintextMessage As Byte() = Encoding.UTF8.GetBytes(secretMessage)
cs.Write(plaintextMessage, 0, plaintextMessage.Length)
cs.Close()
encryptedMessage = ciphertext.ToArray()
Finally
cs.Dispose()
End Try
Finally
ciphertext.Dispose()
End Try
Finally
aes.Dispose()
End Try
End Sub
설명
데이터를 암호화 하는 데 퍼블릭 키에 해당 프라이빗 키 보유자가만이 데이터를 해석할 수 있습니다. 이렇게 하면 의도 한 받는 사람만 비밀 정보에 액세스할 수 있는지 확인 합니다.
추가 정보
적용 대상
.NET