Sdílet prostřednictvím


VERIFYSIGNEDBYCERT (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Testuje, zda byla digitálně podepsaná data změněna od jejich podepsání.

Transact-SQL konvence syntaxe

Syntaxe

VerifySignedByCert( Cert_ID , signed_data , signature )  

Arguments

Cert_ID
Je ID certifikátu v databázi. Cert_ID je inteligence.

signed_data
Je proměnná typu nvarchar, char, varchar nebo nchar , která obsahuje data podepsaná certifikátem.

podpis
Je podpis, který byl připojen k podepsaným datům. Signatura je varibinární.

Návratové typy

int

Vrátí 1, když podepsaná data zůstanou nezměněna; jinak 0.

Poznámky

VerifySignedBycert dešifruje podpis dat pomocí veřejného klíče určeného certifikátu a porovnává dešifrovanou hodnotu s nově vypočítaným MD5 hashem dat. Pokud se hodnoty shodují, podpis je potvrzen jako platný.

Povolení

Vyžaduje povolení ZOBRAZIT DEFINICI na certifikátu.

Examples

A. Ověření, že podepsaná data nebyla manipulována

Následující příklad testuje, zda byly informace v změněny Signed_Data od doby, kdy byly podepsány certifikátem nazvaným Shipping04. Podpis je uložen v DataSignature. Certifikát Shipping04, je předán , Cert_IDkteré vrací ID certifikátu v databázi. Pokud VerifySignedByCert vrátí 1, podpis je správný. Pokud VerifySignedByCert vrací 0, data v Signed_Data nejsou daty, která byla použita k generování DataSignature. V tomto případě Signed_Data buď došlo k změně od podpisu, nebo Signed_Data k podepsání jinému certifikátu.

SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),  
    Signed_Data, DataSignature ) AS IsSignatureValid  
FROM [AdventureWorks2022].[SignedData04]   
WHERE Description = N'data signed by certificate ''Shipping04''';  
GO  

B. Vrácení pouze záznamů, které mají platný podpis

Tento dotaz vrací pouze záznamy, které nebyly změněny od doby, kdy byly podepsány pomocí certifikátu Shipping04.

SELECT Data FROM [AdventureWorks2022].[SignedData04]   
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,   
    DataSignature ) = 1   
AND Description = N'data signed by certificate ''Shipping04''';  
GO  

Viz také

CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
VYTVOŘIT CERTIFIKÁT (Transact-SQL)
ALTERŮV CERTIFIKÁT (Transact-SQL)
CERTIFIKÁT ODHOĎTE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Hierarchie šifrování