Megosztás a következőn keresztül:


VERIFYSIGNEDBYCERT (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Azt vizsgálja, hogy a digitálisan aláírt adatok változtak-e az aláírás óta.

Transact-SQL szintaxis konvenciók

Szemantika

VerifySignedByCert( Cert_ID , signed_data , signature )  

Arguments

Cert_ID
Ez egy tanúsítvány azonosítója az adatbázisban. Cert_IDint.

signed_data
Egy nvarchar, char, varchar vagy nchar típusú változó, amely tanúsítványsal aláírt adatokat tartalmaz.

aláírás
Az az aláírás, amely az aláírt adatokhoz volt csatolva. Aláírásavarbináris.

Visszatérési típusok

int

1-et ad vissza, ha aláírt adatok változatlanok; egyébként 0.

Megjegyzések

A VerifySignedBycert a megadott tanúsítvány nyilvános kulcsával dekódolja az adatok aláírását, és összehasonlítja a dekódolt értéket az adatok újonnan kiszámított MD5 hash-ével. Ha az értékek egyeznek, az aláírás érvényességét igazolják.

Permissions

A tanúsítványon VIEW DEFINITION engedély szükséges.

Példák

A. Annak ellenőrzése, hogy aláírt adatokat nem manipuláltak

A következő példa azt vizsgálja, hogy az információ Signed_Data megváltozott-e azóta, hogy a tanúsítvány által írt Shipping04aláírt . Az aláírás a DataSignature. A tanúsítvány Shipping04, a Cert_IDtanúsítványnak kerül , amely visszaadja a tanúsítvány azonosítóját az adatbázisban. Ha VerifySignedByCert 1-et ad vissza, az aláírás helyes. Ha VerifySignedByCert 0-t ad vissza, akkor az adat nem az az adat, Signed_Data amelyet generáltak DataSignature. Ebben az esetben vagy Signed_Data a felirat megváltozott, vagy Signed_Data más tanúsítványsal írták alá.

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

B. Csak olyan rekordokat küld vissza, amelyek érvényes aláírással rendelkeznek

Ez a lekérdezés csak olyan rekordokat ad vissza, amelyeket nem változtattak a tanúsítvány Shipping04használatával aláírva azóta.

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

Lásd még:

CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
MÓDOSÍTÁSI TANÚSÍTVÁNY (Transact-SQL)
LEENGEDŐ TANÚSÍTVÁNY (Transact-SQL)
BIZTONSÁGI MENTÉSI TANÚSÍTVÁNY (Transact-SQL)
Titkosítási hierarchia