CryptGenerateSignature

生成数据的数字签名。

格式 

CryptGenerateSignature(数据;算法;RSA 私钥;密钥密码)

参数 

数据 - 用来生成签名的任意文本表达式。

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

RSA 私钥 - 表示 RSA 私钥的文本。可选择性地对秘钥加密。

密钥密码 - 用来解密 RSA 私钥的密码。如果 RSA 私钥未加密,该参数将被忽略。

返回的数据类型 

容器

原始版本 

18.0

说明 

要生成签名,该函数应先使用指定算法来计算数据参数的消息摘要。然后使用 RSA 私钥参数对摘要加密。如果私钥本身已加密,则必须提供密码作为最后一个参数密钥密码

未加密的 RSA 私钥必须是以下格式:

复制
-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEAqqDiwrPQwVaJzOzfFVBdhNjRNRxghZVQ9a3S88so8piw0uRt
...
A4jh5ffbGA6rlv1kEt1Inq2XDnKASjnWQGltDWWTJFs/XBcfoFXHpYiVINmp
-----END RSA PRIVATE KEY-----

加密的 RSA 私钥必须是以下格式:

复制
-----BEGIN RSA PRIVATE KEY-----
Proc-Type:4,ENCRYPTED
DEK-Info:DES-EDE3-CBC,B2EFE673714F681D

gMvo1cn1+Sjch4cPXT/Mty0pILnsbM5SsBPadRJJQtrGrM8LkkrRNdxYRBeIGUMj
...
lHGJJBHogUW4Ig3/kd4ROVHusRYLtyyfz13A96tIl6Y7lu2L7alNWQ==
-----END RSA PRIVATE KEY-----

要生成 RSA 密钥对,您可以使用 OpenSSL 工具包:请参阅 www.openssl.org

此函数将返回数据的二进制签名,作为容器数据,或返回 "?"(如果任意参数无效)。您可以使用 Base64EncodeRFC 函数HexEncode 函数将容器数据转换为文本。

示例 1 

使用带有加密私钥的 SHA-512 算法对“表::签名文本”文本字段中的数据进行签名。该签名将返回作为 Base64 编码文本。

复制
Base64EncodeRFC ( 4648 ; 
    CryptGenerateSignature ( 
        表::签名文本 ; "SHA512" ; 表::RSA 私钥 ; $密码 
    )
)