Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di
AzureIstanza gestita di SQL di
AzureDatabase SQL in Microsoft Fabric
Verifica se i dati con firma digitale sono stati modificati dopo la firma.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
VerifySignedByCert( Cert_ID , signed_data , signature )
Argomenti
Cert_ID
ID di un certificato nel database.
Cert_ID è di tipo int.
signed_data
Variabile di tipo nvarchar, char, varchar o nchar contenente i dati firmati con un certificato.
signature
Firma allegata ai dati firmati.
signature è di tipo varbinary.
Tipi restituiti
int
Restituisce 1 se i dati firmati risultano invariati; in caso contrario, restituisce 0.
Osservazioni:
VerifySignedBycert decrittografa la firma dei dati usando la chiave pubblica del certificato specificato e confronta il valore decrittografato con un nuovo hash MD5 dei dati calcolato. Se i valori corrispondono, viene confermata la validità della firma.
Autorizzazioni
È richiesta l'autorizzazione VIEW DEFINITION per il certificato.
Esempi
R. Verifica che i dati firmati non siano stati alterati
Nell'esempio seguente viene verificato se le informazioni incluse in Signed_Data sono state modificate dopo la firma tramite il certificato denominato Shipping04. La firma viene archiviata in DataSignature. Il certificato Shipping04 viene passato a Cert_ID, che restituisce l'ID del certificato nel database. Se VerifySignedByCert restituisce 1, la firma è corretta. Se invece VerifySignedByCert restituisce 0, i dati in Signed_Data non corrispondono ai dati utilizzati per generare DataSignature. In questo caso, i dati in Signed_Data sono stati modificati dopo la firma oppure la firma di Signed_Data è stata eseguita con un certificato diverso.
SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),
Signed_Data, DataSignature ) AS IsSignatureValid
FROM [AdventureWorks2022].[SignedData04]
WHERE Description = N'data signed by certificate ''Shipping04''';
GO
B. Restituzione solo dei record che dispongono di una firma valida
La query restituisce solo i record che non hanno subito modifiche dopo essere stati firmati utilizzando il certificato Shipping04.
SELECT Data FROM [AdventureWorks2022].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO
Vedi anche
CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
CREA UN CERTIFICATO (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
CERTIFICATO DI ABBANDONAZIONE (Transact-SQL)
CERTIFICATO DI BACKUP (Transact-SQL)
Gerarchia di crittografia