Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Testa se os dados assinados digitalmente foram alterados desde que foram assinados.
Transact-SQL convenções de sintaxe
Sintaxe
VerifySignedByCert( Cert_ID , signed_data , signature )
Arguments
Cert_ID
É o ID de um certificado na base de dados.
Cert_ID é inteligência.
signed_data
É uma variável do tipo nvarchar, char, varchar ou nchar que contém dados assinados com um certificado.
assinatura
É a assinatura que foi associada aos dados assinados.
A assinatura é Varbinary.
Tipos de devolução
int
Retorna 1 quando os dados assinados permanecem inalterados; caso contrário, 0.
Observações
O VerifySignedBycert desencripta a assinatura dos dados usando a chave pública do certificado especificado e compara o valor desencriptado com um hash MD5 recém-calculado dos dados. Se os valores coincidirem, a assinatura é confirmada como válida.
Permissions
Requer permissão VER DEFINIÇÃO no certificado.
Examples
A. Verificar se os dados assinados não foram adulterados
O exemplo seguinte testa se a informação em Signed_Data foi alterada desde que foi assinada com o certificado chamado Shipping04. A assinatura é armazenada em DataSignature. O certificado, Shipping04, é passado para Cert_ID, que devolve o ID do certificado na base de dados. Se VerifySignedByCert devolver 1, a assinatura está correta. Se VerifySignedByCert devolver 0, os dados em Signed_Data não são os dados usados para gerar DataSignature. Neste caso, ou Signed_Data foi alterado desde que foi assinado ou Signed_Data foi assinado com um certificado diferente.
SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),
Signed_Data, DataSignature ) AS IsSignatureValid
FROM [AdventureWorks2022].[SignedData04]
WHERE Description = N'data signed by certificate ''Shipping04''';
GO
B. Devolver apenas registos que tenham uma assinatura válida
Esta consulta devolve apenas registos que não foram alterados desde que foram assinados usando certificado Shipping04.
SELECT Data FROM [AdventureWorks2022].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO
Ver também
CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CRIAR CERTIFICADO (Transact-SQL)
CERTIFICADO ALTER (Transact-SQL)
CERTIFICADO DE DESISTÊNCIA (Transact-SQL)
CERTIFICADO DE CÓPIA DE SEGURANÇA (Transact-SQL)
Hierarquia de criptografia