다음을 통해 공유


서명 확인

업데이트: 2007년 11월

데이터를 특정인이 서명한 것인지 확인하려면 다음 정보가 있어야 합니다.

  • 데이터에 서명한 사람의 공개 키

  • 디지털 서명

  • 서명된 데이터

  • 서명자가 사용한 해시 알고리즘

RSAPKCS1SignatureFormatter 클래스로 수행한 서명을 확인하려면 RSAPKCS1SignatureDeformatter 클래스를 사용합니다. RSAPKCS1SignatureDeformatter 클래스에는 서명자의 공개 키를 제공해야 합니다. 공개 키를 지정하려면 모듈러스 및 지수 값이 있어야 합니다. 이 값은 공개/개인 키 쌍을 생성한 사람이 제공해야 합니다. 먼저 RSACryptoServiceProvider 개체를 만들어 서명을 확인할 공개 키를 저장한 다음 해당 공개 키를 지정하는 모듈러스 및 지수 값으로 RSAParameters 구조체를 초기화합니다.

다음 코드에서는 RSAParameters 구조체를 만드는 방법을 보여 줍니다. Modulus 속성은 ModulusData라는 바이트 배열의 값으로 설정되고 Exponent 속성은 ExponentData라는 바이트 배열의 값으로 설정됩니다.

Dim RSAKeyInfo As RSAParameters
RSAKeyInfo.Modulus = ModulusData
RSAKeyInfo.Exponent = ExponentData
RSAParameters RSAKeyInfo;
RSAKeyInfo.Modulus = ModulusData;
RSAKeyInfo.Exponent = ExponentData;

RSAParameters 개체를 만든 다음에는 RSACryptoServiceProvider 클래스의 새 인스턴스를 RSAParameters에 지정된 값으로 초기화할 수 있습니다. 그런 다음에는 이 RSACryptoServiceProviderRSAPKCS1SignatureDeformatter의 생성자에 전달되어 키를 전송합니다.

다음 예제에서는 이 프로세스를 보여 줍니다. 이 예제에서 HashValue와 SignedHashValue는 원격 사용자가 제공하는 바이트 배열입니다. 원격 사용자는 SHA1 알고리즘을 사용하여 HashValue에 서명했으며 디지털 서명 SignedHashValue를 생성했습니다. RSAPKCS1SignatureDeformatter.VerifySignature 메서드는 이 디지털 서명이 유효한지 여부와 HashValue에 서명하는 데 사용된 것인지 여부를 확인합니다.

Dim RSA As New RSACryptoServiceProvider()
RSA.ImportParameters(RSAKeyInfo)
Dim RSADeformatter As New RSAPKCS1SignatureDeformatter(RSA)
RSADeformatter.SetHashAlgorithm("SHA1")
If RSADeformatter.VerifySignature(HashValue, SignedHashValue) Then
   Console.WriteLine("The signature is valid.")
Else
   Console.WriteLine("The signture is not valid.")
End If
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.ImportParameters(RSAKeyInfo);
RSAPKCS1SignatureDeformatter RSADeformatter = new RSAPKCS1SignatureDeformatter(RSA);
RSADeformatter.SetHashAlgorithm("SHA1");
if(RSADeformatter.VerifySignature(HashValue, SignedHashValue))
{
   Console.WriteLine("The signature is valid.");
}
else
{
   Console.WriteLine("The signature is not valid.");
}

이 코드에서는 서명이 유효하면 "The signature is valid"라는 메시지를 표시하고 그렇지 않으면 "The signature is not valid"라는 메시지를 표시합니다.

참고 항목

개념

서명 생성

암호화 서명

기타 리소스

암호화 작업

암호화 서비스