VERIFYSIGNEDBYCERT (Transact-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Menguji apakah data yang ditandatangani secara digital telah diubah sejak ditandatangani.
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