Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do
AzureInstância
Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric
Testa se dados assinados digitalmente foram alterados desde que foram assinados.
Convenções de sintaxe de Transact-SQL
Sintaxe
VerifySignedByCert( Cert_ID , signed_data , signature )
Argumentos
Cert_ID
É a ID de um certificado no banco de dados.
Cert_ID é int.
signed_data
É uma variável do tipo nvarchar, char, varchar ou nchar que contém dados que foi assinados com um certificado.
assinatura
É a assinatura que foi anexada aos dados assinados.
assinatura é varbinary.
Tipos de retorno
int
Retorna 1 quando os dados assinados estão inalterados, caso contrário, retorna 0.
Comentários
VerifySignedBycert descriptografa a assinatura dos dados usando a chave pública da chave assimétrica especificada e compara o valor descriptografado a um hash de MD5 dos dados computados recentemente. Se os valores corresponderem, a assinatura será confirmada como válida.
Permissões
Exige a permissão VIEW DEFINITION no certificado.
Exemplos
a. Verificando se os dados assinados não foram violados
O exemplo a seguir testa se as informações em Signed_Data foram alteradas desde que foram assinadas com o certificado chamado Shipping04. A assinatura é armazenada em DataSignature. O certificado, Shipping04, é passado para Cert_ID, que retorna a ID do certificado no banco de dados. Se VerifySignedByCert retornar 1, a assinatura estará correta. Se VerifySignedByCert retornar 0, os dados em Signed_Data não serão os que foram 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. Retornando somente registros que tenham uma assinatura válida
Esta consulta retorna somente os registros que não foram alterados desde que foram assinados com o certificado Shipping04.
SELECT Data FROM [AdventureWorks2022].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO
Consulte Também
CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CRIAR CERTIFICADO (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
CERTIFICADO DE DESISTÊNCIA (Transact-SQL)
CERTIFICADO DE BACKUP (Transact-SQL)
Hierarquia de criptografia