Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza 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