Bagikan melalui


VERIFYSIGNEDBYCERT (Transact-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Menguji apakah data yang ditandatangani secara digital telah diubah sejak ditandatangani.

Konvensi sintaks transact-SQL

Sintaks

VerifySignedByCert( Cert_ID , signed_data , signature )  

Argumen

Cert_ID
Adalah ID sertifikat dalam database. Cert_ID int.

signed_data
Adalah variabel jenis nvarchar, char, varchar, atau nchar yang berisi data yang telah ditandatangani dengan sertifikat.

tanda tangan
Adalah tanda tangan yang dilampirkan ke data yang ditandatangani. tanda tangan adalah varbinary.

Jenis Kembalian

int

Mengembalikan 1 saat data yang ditandatangani tidak berubah; jika tidak, 0.

Keterangan

VerifySignedBycert mendekripsi tanda tangan data dengan menggunakan kunci publik sertifikat yang ditentukan, dan membandingkan nilai yang didekripsi dengan hash MD5 data yang baru dihitung. Jika nilai cocok, tanda tangan dikonfirmasi valid.

Izin

Memerlukan izin LIHAT DEFINISI pada sertifikat.

Contoh

J. Memverifikasi bahwa data yang ditandatangani belum dirusak

Contoh berikut menguji apakah informasi di telah diubah sejak ditandatangani Signed_Data dengan sertifikat yang disebut Shipping04. Tanda tangan disimpan di DataSignature. Sertifikat, Shipping04, diteruskan ke Cert_ID, yang mengembalikan ID sertifikat dalam database. Jika VerifySignedByCert mengembalikan 1, tanda tangan sudah benar. Jika VerifySignedByCert mengembalikan 0, data di Signed_Data bukan data yang digunakan untuk menghasilkan DataSignature. Dalam hal ini, telah Signed_Data diubah sejak ditandatangani atau Signed_Data ditandatangani dengan sertifikat yang berbeda.

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

B. Mengembalikan hanya rekaman yang memiliki tanda tangan yang valid

Kueri ini hanya mengembalikan rekaman yang belum diubah sejak ditandatangani menggunakan sertifikat Shipping04.

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

Lihat Juga

CERT_ID (T-SQL)
SIGNBYCERT (Transact-SQL)
BUAT SERTIFIKAT (Transact-SQL)
UBAH SERTIFIKAT (Transact-SQL)
HILANGKAN SERTIFIKAT (T-SQL)
SERTIFIKAT CADANGAN (Transact-SQL)
Hierarki Enkripsi