RSACryptoServiceProvider.VerifyHash 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
验证数字签名是否有效。
重载
| 名称 | 说明 |
|---|---|
| VerifyHash(Byte[], String, Byte[]) |
通过使用提供的公钥确定签名中的哈希值并将其与提供的哈希值进行比较,验证数字签名是否有效。 |
| VerifyHash(Byte[], Byte[], HashAlgorithmName, RSASignaturePadding) |
通过使用指定的哈希算法和填充来确定签名中的哈希值并将其与提供的哈希值进行比较,验证数字签名是否有效。 |
VerifyHash(Byte[], String, Byte[])
通过使用提供的公钥确定签名中的哈希值并将其与提供的哈希值进行比较,验证数字签名是否有效。
public:
bool VerifyHash(cli::array <System::Byte> ^ rgbHash, System::String ^ str, cli::array <System::Byte> ^ rgbSignature);
public bool VerifyHash(byte[] rgbHash, string str, byte[] rgbSignature);
override this.VerifyHash : byte[] * string * byte[] -> bool
member this.VerifyHash : byte[] * string * byte[] -> bool
Public Function VerifyHash (rgbHash As Byte(), str As String, rgbSignature As Byte()) As Boolean
参数
- rgbHash
- Byte[]
已签名数据的哈希值。
- str
- String
用于创建数据的哈希值的哈希算法标识符 (OID)。
- rgbSignature
- Byte[]
要验证的签名数据。
返回
true 如果签名有效,则为否则,为 false.
例外
示例
以下示例演示如何使用 VerifyHash 该方法验证签名。 此代码示例是〈c0〉方法的一个较大示例的一部分。
public bool VerifyHash(RSAParameters rsaParams, byte[] signedData, byte[] signature)
{
RSACryptoServiceProvider rsaCSP = new RSACryptoServiceProvider();
SHA1Managed hash = new SHA1Managed();
byte[] hashedData;
rsaCSP.ImportParameters(rsaParams);
bool dataOK = rsaCSP.VerifyData(signedData, CryptoConfig.MapNameToOID("SHA1"), signature);
hashedData = hash.ComputeHash(signedData);
return rsaCSP.VerifyHash(hashedData, CryptoConfig.MapNameToOID("SHA1"), signature);
}
Public Function VerifyHash(ByVal rsaParams As RSAParameters, ByVal signedData() As Byte, ByVal signature() As Byte) As Boolean
Dim rsaCSP As New RSACryptoServiceProvider()
Dim hash As New SHA1Managed()
Dim hashedData() As Byte
Dim dataOK As Boolean
rsaCSP.ImportParameters(rsaParams)
dataOK = rsaCSP.VerifyData(signedData, CryptoConfig.MapNameToOID("SHA1"), signature)
hashedData = hash.ComputeHash(signedData)
Return rsaCSP.VerifyHash(hashedData, CryptoConfig.MapNameToOID("SHA1"), signature)
End Function 'VerifyHash
注解
此方法验证 RSA 该方法生成的 SignHash 数字签名。 通过使用签名的公钥从签名获取哈希值,并将该值与所提供的数据的哈希值进行比较来验证签名。
有效的哈希算法和 SHA1MD5。 算法标识符可以使用该方法从哈希名称 MapNameToOID 派生。
由于 SHA-1 和 MD5 发生冲突问题,Microsoft建议基于 SHA-256 或更高版本的安全模型。
另请参阅
适用于
VerifyHash(Byte[], Byte[], HashAlgorithmName, RSASignaturePadding)
通过使用指定的哈希算法和填充来确定签名中的哈希值并将其与提供的哈希值进行比较,验证数字签名是否有效。
public:
override bool VerifyHash(cli::array <System::Byte> ^ hash, cli::array <System::Byte> ^ signature, System::Security::Cryptography::HashAlgorithmName hashAlgorithm, System::Security::Cryptography::RSASignaturePadding ^ padding);
public override bool VerifyHash(byte[] hash, byte[] signature, System.Security.Cryptography.HashAlgorithmName hashAlgorithm, System.Security.Cryptography.RSASignaturePadding padding);
override this.VerifyHash : byte[] * byte[] * System.Security.Cryptography.HashAlgorithmName * System.Security.Cryptography.RSASignaturePadding -> bool
Public Overrides Function VerifyHash (hash As Byte(), signature As Byte(), hashAlgorithm As HashAlgorithmName, padding As RSASignaturePadding) As Boolean
参数
- hash
- Byte[]
已签名数据的哈希值。
- signature
- Byte[]
要验证的签名数据。
- hashAlgorithm
- HashAlgorithmName
用于创建哈希值的哈希算法名称。
- padding
- RSASignaturePadding
填充。
返回
true 如果签名有效,则为否则,为 false.
例外
hashAlgorithm 是 null 或 Empty。
padding 不等于 Pkcs1。