CryptVerifySignature

验证数字签名对数据是否有效。

格式 

CryptVerifySignature(数据;算法;RSA 公钥;签名)

参数 

数据 - 用来表示验证签名的数据的任意文本表达式。

算法 - 要使用的加密算法的名称(参阅CryptAuthCode 函数)。

RSA 公钥 - 表示与用来生成签名的私钥对应的 PEM 格式的 PKCS #1 RSA 公钥的文本。

签名 - 用来验证数据的二进制 RSA 签名,比如 CryptGenerateSignature 函数返回的值。

返回的数据类型 

数字

原始版本 

18.0

说明 

要验证签名,该函数将数据的消息摘要(使用指定算法)与通过使用 RSA 公钥解密签名获取的摘要进行比较。

RSA 公钥必须是以下格式:

复制
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqqDiwrPQwVaJzOzfFVBd
...
egkXva5cYBb8PNifmlPXVb8CAwEAAQ==
-----END PUBLIC KEY-----

如果签名对数据有效,该函数将返回 1 (真);如果签名无效,则返回 0 (假)。如果任意参数无效,则返回"?"。

示例 1 

使用 SHA-512 算法生成“表::签名文本”的摘要。Base64 解码存储在“表::签名”文本字段中的签名,并返回为容器数据。使用“表::RSA 公钥”字段中的值解密签名,并将签名摘要与基于“表::签名文本”字段的摘要进行比较。如果该签名有效,则返回“1”。

复制
CryptVerifySignature ( 
    表::签名文本 ; "SHA512" ; 表::RSA 公钥 ;     
    Base64Decode (         
        表::签名 ; "sig.data"     
    ) 
)