VerifySignedByAsmKey (Transact-SQL)

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

主题链接图标Transact-SQL 语法约定

语法

 VerifySignedByAsymKey( Asym_Key_ID , clear_text , signature )

参数

  • Asym_Key_ID
    数据库中非对称密钥证书的 ID。
  • clear_text
    正在验证的明文数据。
  • signature
    附加到已签名数据中的签名。 varbinary.

返回类型

int

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

备注

VerifySignedByAsmKey 使用数据库中存储的非对称密钥从已签名的数据中派生一个签名。在收到与已签名数据相关联的签名时,VerifySignedByAsmKey 会将新派生的签名和该签名进行比较。如果新派生的签名与附加到已签名数据中的签名相同,则证明该数据在签名之后未发生更改。

权限

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

示例

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

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

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

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

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

SELECT Data 
FROM [AdventureWorks].[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)

其他资源

加密层次结构

帮助和信息

获取 SQL Server 2005 帮助