VERIFYSIGNEDBYASYMKEY (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

测试经过数字签名的数据在签名后是否发生了更改。

Transact-SQL 语法约定

语法

VerifySignedByAsymKey( Asym_Key_ID , clear_text , signature )  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

自变量

Asym_Key_ID
数据库中非对称密钥证书的 ID。

clear_text
正在验证的明文数据。

签名
附加到已签名数据中的签名。 signature 的数据类型为 varbinary

返回类型

int

如果签名匹配,则返回 1;否则返回 0。

注解

VerifySignedByAsymKey 使用指定的非对称密钥的公钥对数据的签名进行解密,并将解密所得到的值与数据新计算出的 MD5 哈希值进行比较。 如果值匹配,则确认签名有效。

权限

要求对非对称密钥具有 VIEW DEFINITION 权限。

示例

A. 测试具有有效签名的数据

如果所选数据在使用 WillisKey74 非对称密钥进行签名后未曾更改,则以下示例返回 1。 如果数据已被篡改,则该示例返回 0。

SELECT Data,  
     VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), SignedData,  
     DataSignature ) as IsSignatureValid  
FROM [AdventureWorks2022].[SignedData04]   
WHERE Description = N'data encrypted by asymmetric key ''WillisKey74''';  
GO  
RETURN;  

B. 返回包含带有有效签名数据的结果集

如果 SignedData04 所包含的数据在使用 WillisKey74 非对称密钥进行签名后未曾更改,则以下示例返回 SignedData04 中的行。 该示例调用 AsymKey_ID 函数从数据库中获取非对称密钥 ID。

SELECT Data   
FROM [AdventureWorks2022].[SignedData04]   
WHERE VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), Data,  
     DataSignature ) = 1  
AND Description = N'data encrypted by asymmetric key ''WillisKey74''';  
GO  

另请参阅

ASYMKEY_ID (Transact-SQL)
SIGNBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
加密层次结构