Aracılığıyla paylaş


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 VIEW DEFINITION izni gerektirir.

Ö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)
SERTİFİKA OLUŞTUR (Transact-SQL)
SERTİFİKAYI DEĞİŞTİR (Transact-SQL)
DROP CERTİ (Transact-SQL)
YEDEKLEME SERTIFIKASI (Transact-SQL)
Şifreleme Hiyerarşisi