Aracılığıyla paylaş


VerifySignedByCert (Transact-SQL)

Dijital olarak imzalanmış veri imzalandıktan sonra değiştirilmiş olup olmadığını sınar.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

VerifySignedByCert( Cert_ID , signed_data , signature )

Bağımsız değişkenler

  • Cert_ID
    sertifika veritabanı kimliğidir.Cert_IDis int.

  • signed_data
    Türünde bir değişken olan nvarchar, char, varchar, veya nchar bir sertifikaile imzalanmış verileri içeren.

  • signature
    İmzalı veri ile bağlantılı imza değil.signatureis varbinary.

Dönüş Türleri

int

İmzalı veriler değişmeden 1 döndürür; Aksi takdirde 0.

Açıklamalar

VerifySignedBycertBelirtilen sertifikaortak anahtar kullanarak imza verisinin şifresini çözer ve şifresi çözülmüş verilerin yeni hesaplanan MD5 karma değerini karşılaştırır.Değerler eşleşirse, geçerli imza doğrulanır.

İzinler

sertifikaüzerinde görünüm TANIMI izni gerektirir.

Örnekler

A.İmzalı veri ile değiştirilmemiş olduğunu doğrulama

Aşağıdaki örnek sınamaları olup olmadığını bilgileri Signed_Data değiştirildi imzalanmış sertifika olarak adlandırılan bu yana Shipping04.İmzanın saklandığı DataSignature.sertifika Shipping04için gönderilir, Cert_ID, veritabanında sertifika Kimliğini döndürürVerifySignedByCert 1, İmza doğru döndürür.VerifySignedByCert 0, Verileri döndürür Signed_Data olmayan veri oluşturmak için kullanılan DataSignature.Bu durum, ya da Signed_Data imzalandıktan sonra değiştirilmiş veya Signed_Data farklı sertifikaile imzalanmış.

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

B.Yalnızca geçerli imzaya sahip kayıtları döndürme

Bu sorgu sertifikakullanılarak imzalanmış beri değiştirilmedi yalnızca kayıtları döndürürShipping04.

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