VerifySignedByAsymKey (Transact-SQL)
测试经过数字签名的数据在签名之后是否发生了更改。
语法
VerifySignedByAsymKey( Asym_Key_ID , clear_text , signature )
参数
Asym_Key_ID
数据库中非对称密钥证书的 ID。clear_text
正在验证的明文数据。signature
附加到已签名数据中的签名。signature 为 varbinary 类型。
返回类型
int
如果签名匹配,则返回 1;否则返回 0。
注释
VerifySignedByAsymKey 使用指定的非对称密钥的公钥对数据的签名进行解密,并将解密所得到的值与数据新计算出的 MD5 哈希值进行比较。如果值匹配,则确认签名有效。
权限
要求对非对称密钥具有 VIEW DEFINITION 权限。
示例
A. 测试具有有效签名的数据
如果所选数据在使用 WillisKey74 非对称密钥进行签名后未曾更改,则以下示例返回 1。如果数据已被篡改,则该示例返回 0。
SELECT Data,
VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), SignedData,
DataSignature ) as IsSignatureValid
FROM [Adventureworks2008R2].[SignedData04]
WHERE Description = N'data encrypted by asymmetric key ''WillisKey74'''
GO
RETURN
B. 返回包含带有有效签名数据的结果集
如果 SignedData04 所包含的数据在使用 WillisKey74 非对称密钥进行签名后未曾更改,则以下示例返回 SignedData04 中的行。该示例调用 AsymKey_ID 函数从数据库中获取非对称密钥 ID。
SELECT Data
FROM [Adventureworks2008R2].[SignedData04]
WHERE VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), Data,
DataSignature ) = 1
AND Description = N'data encrypted by asymmetric key ''WillisKey74'''
GO