Udostępnij za pomocą


SPRAWDŹ podpisanycert (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Sprawdza, czy cyfrowo podpisane dane zostały zmienione od momentu podpisania.

Transact-SQL konwencje składni

Składnia

VerifySignedByCert( Cert_ID , signed_data , signature )  

Arguments

Cert_ID
To identyfikator certyfikatu w bazie danych. Cert_ID to inteligencja.

signed_data
Jest zmienną typu nvarchar, char, varchar lub nchar , która zawiera dane podpisane certyfikatem.

podpis
To podpis, który został dołączony do podpisanych danych. Signatura jest warbinarna.

Typy zwracane

int

Zwraca 1, gdy dane podpisane pozostają bez zmian; w przeciwnym razie 0.

Uwagi

VerifySignedBycert odszyfrowuje podpis danych, używając klucza publicznego określonego certyfikatu, i porównuje odszyfrowaną wartość z nowo obliczonym hashem MD5 danych. Jeśli wartości się zgadzają, potwierdza się prawidłowość sygnatury.

Permissions

Wymaga uprawnienia VIEW DEFINITION na certyfikcie.

Przykłady

A. Weryfikacja, że podpisane dane nie zostały zmanipulowane

Poniższy przykład sprawdza, czy informacje w Signed_Data zostały zmienione od momentu podpisania certyfikatem o nazwie Shipping04. Podpis jest przechowywany w DataSignature. Certyfikat Shipping04, jest przekazywany do Cert_ID, który zwraca identyfikator certyfikatu w bazie danych. Jeśli VerifySignedByCert zwróci 1, podpis jest poprawny. Jeśli VerifySignedByCert zwraca 0, dane w Signed_Data nie są tymi, które zostały użyte do wygenerowania DataSignature. W tym przypadku albo Signed_Data zostało zmienione od momentu podpisania, albo Signed_Data podpisane innym certyfikatem.

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

B. Zwracanie tylko rekordów z ważnym podpisem

To zapytanie zwraca tylko rekordy, które nie zostały zmienione od momentu podpisania za pomocą certyfikatu Shipping04.

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

Zobacz też

CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
UTWÓRZ CERTYFIKAT (Transact-SQL)
CERTYFIKAT ALTERA (Transact-SQL)
CERTYFIKAT DROP (Transact-SQL)
certyfikat kopii zapasowej (Transact-SQL)
Hierarchia szyfrowania