Udostępnij za pośrednictwem


VerifySignedByCert (Transact-SQL)

Sprawdzenie, czy danych podpisanych cyfrowo została zmieniona po jego podpisaniu.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

VerifySignedByCert( Cert_ID , signed_data , signature )

Argumenty

  • Cert_ID
    Jest to identyfikator certyfikat w bazie danych.Cert_IDis int.

  • signed_data
    Jest zmienną typu nvarchar, char, varchar, lub nchar zawierający dane, który został podpisany przy użyciu certyfikat.

  • signature
    Jest podpis, który był dołączony do podpisane dane.signatureis varbinary.

Zwracane typy

int

Zwraca wartość 1, gdy podpisane dane bez zmian; 0 inaczej.

Uwagi

VerifySignedBycertOdszyfrowuje podpis danych za pomocą publicznego klucz określonego certyfikati porównuje wartość odszyfrowane do nowo obliczone wartości mieszania MD5 danych.Jeżeli wartości pasują do siebie, podpis potwierdza się ważność.

Uprawnienia

Wymaga uprawnień VIEW DEFINITION certyfikat.

Przykłady

A.Weryfikowanie, czy podpisane dane nie została sfałszowana

Następujące badania przykład czy informacje w Signed_Data została zmieniona po jego podpisaniu certyfikat o nazwie Shipping04.Podpis jest przechowywany w DataSignature.certyfikat Shipping04, jest przekazywany do Cert_ID, która zwraca identyfikator certyfikat w bazie danych.Jeśli VerifySignedByCert zwraca wartość 1, podpis jest prawidłowy.Jeśli VerifySignedByCert zwraca wartość 0, dane w Signed_Data jest nie danych, który został użyty do wygenerowania DataSignature.W tym przypadekalbo Signed_Data została zmieniona po jego podpisaniu lub Signed_Data została podpisana z innego certyfikat.

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

B.Zwracanie tylko te rekordy, które mają prawidłowy podpis

Ta kwerenda zwraca tylko te rekordy, które nie zostały zmienione od czasu zostały podpisane przy użyciu certyfikat Shipping04.

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