共用方式為


驗證簽章

為了要驗證資料是由特定一方所簽章,您必須擁有以下資訊:

  • 簽章資料一方的公開金鑰

  • 數位簽章

  • 已簽章的資料

  • 簽署人使用的雜湊演算法

若要驗證 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 中所指定的值。接著,RSACryptoServiceProvider 傳遞給 RSAPKCS1SignatureDeformatter 的建構函式以傳輸這個金鑰。

下列範例說明這個處理序。在這個範例中,HashValueSignedHashValue 是遠端一方提供的位元組陣列。遠端的一方使用 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"。

請參閱

概念

產生簽章
密碼編譯簽章

其他資源

密碼編譯工作
密碼編譯服務