Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft 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