VERIFYSIGNEDBYCERT (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

İmzalanmış dijital imzalı verilerin imzalandığından beri değiştirilip değiştirilmediğini test eder.

Transact-SQL söz dizimi kuralları

Sözdizimi

VerifySignedByCert( Cert_ID , signed_data , signature )  

Arguments

Cert_ID
Veritabanındaki bir sertifikanın kimliği nedir. Cert_IDiçsel.

signed_data
Sertifika ile imzalanmış verileri içeren nvarchar, char, varchar veya nchar tipinde bir değişkendir.

imza
İmzalı veriye bağlı olan imza. İmzavarbinardır.

Dönüş Türleri

int

İmzalı veri değişmediğinde 1 döndürür; aksi takdirde 0.

Açıklamalar

VerifySignedBycert , belirtilen sertifikanın açık anahtarını kullanarak verinin imzasını çözer ve çözülen değeri yeni hesaplanmış MD5 hash verileriyle karşılaştırır. Değerler eşleşirse, imzanın geçerli olduğu doğrulanır.

Permissions

Sertifikada DEFINITION izni gerektirir VIEW .

Örnekler

A. İmzalı verilerin müdahale edilmediğini doğrulamak

Aşağıdaki örnek, içindeki Signed_Data bilginin imzalanmış Shipping04sertifika ile imzalandığından beri değiştirilip değiştirilmediğini test ediyor. İmza içinde DataSignaturesaklanır. Sertifika, Shipping04, sertifikanın veritabanındaki kimliğini döndüren 'ye Cert_IDiletilir. 1 dönerse VerifySignedByCert , imza doğrudur. 0 dönerse VerifySignedByCert , içindeki Signed_Data veri üretilen DataSignatureveri değildir. Bu durumda, ya Signed_Data imzalandıktan sonra değiştirilmiş ya da Signed_Data farklı bir sertifika ile imzalanmıştır.

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

B. Sadece geçerli imzaya sahip kayıtları geri döndürmek

Bu sorgu, yalnızca sertifika Shipping04ile imzalandıktan sonra değiştirilmemiş kayıtları döndürür.

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

Ayrıca Bkz.

CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Şifreleme Hiyerarşisi