Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Toetst of digitaal ondertekende gegevens zijn gewijzigd sinds het ondertekenen.
Transact-SQL syntaxis-conventies
Syntaxis
VerifySignedByCert( Cert_ID , signed_data , signature )
Arguments
Cert_ID
Is de ID van een certificaat in de database.
Cert_ID is int.
signed_data
Is een variabele van het type nvarchar, char, varchar of nchar die gegevens bevat die met een certificaat zijn ondertekend.
handtekening
Is de handtekening die aan de ondertekende data is gekoppeld.
Signature is varbinary.
Retourtypen
int
Geeft 1 terug wanneer ondertekende gegevens ongewijzigd blijven; anders 0.
Opmerkingen
VerifySignedBycert ontsleutelt de handtekening van de data met behulp van de publieke sleutel van het gespecificeerde certificaat en vergelijkt de ontsleutelde waarde met een nieuw berekende MD5-hash van de data. Als de waarden overeenkomen, wordt de handtekening als geldig bevestigd.
Permissions
Vereist toestemming VIEW DEFINITION op het certificaat.
Voorbeelden
Eén. Controleren dat ondertekende gegevens niet zijn gemanipuleerd
Het volgende voorbeeld test of de informatie in Signed_Data is gewijzigd sinds het is ondertekend met het certificaat genaamd Shipping04. De handtekening wordt opgeslagen in DataSignature. Het certificaat, Shipping04, wordt doorgegeven aan Cert_ID, wat de ID van het certificaat in de database teruggeeft. Als VerifySignedByCert 1 terugkomt, is de handtekening correct. Als VerifySignedByCert 0 teruggeeft, is de data in Signed_Data niet de data die is gebruikt om te genereren DataSignature. In dit geval is het ofwel Signed_Data aangepast sinds de ondertekening of Signed_Data is het ondertekend met een ander certificaat.
SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),
Signed_Data, DataSignature ) AS IsSignatureValid
FROM [AdventureWorks2022].[SignedData04]
WHERE Description = N'data signed by certificate ''Shipping04''';
GO
B. Alleen documenten terugsturen met een geldige handtekening
Deze query levert alleen records op die niet zijn gewijzigd sinds ze met certificaat Shipping04zijn ondertekend.
SELECT Data FROM [AdventureWorks2022].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO
Zie ook
CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CERTIFICAAT MAKEN (Transact-SQL)
ALTER CERTIFICAAT (Transact-SQL)
DROPCERTIFICAAT (Transact-SQL)
BACK-UPCERTIFICAAT (Transact-SQL)
Versleutelingshiërarchie