Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Проверяет, изменялись ли данные с цифровой подписью с момента подписи.
Соглашения о синтаксисе Transact-SQL
Синтаксис
VerifySignedByCert( Cert_ID , signed_data , signature )
Аргументы
Cert_ID
Идентификатор сертификата в базе данных. Аргумент Cert_ID имеет тип int.
signed_data
Переменная типа nvarchar, char, varchar или nchar, содержащая данные, которые были подписаны с помощью сертификата.
signature
Это подпись, которая была прикреплена к подписанным данным. Аргумент signature имеет тип varbinary.
Типы возвращаемых данных
int
Возвращает 1, если подписанные данные не были изменены, и 0 — в противном случае.
Замечания
VerifySignedBycert расшифровывает подпись данных с помощью открытого ключа указанного сертификата и сравнивает расшифрованное значение с новым хэшем MD5, вычисленным для данных. Если значения совпадают, подтверждается допустимость подписи.
Разрешения
Требует разрешения VIEW DEFINITION на сертификат.
Примеры
А. Проверка подписанных данных на предмет подделки
В следующем примере данные, содержащиеся в Signed_Data, тестируются на предмет изменения с момента подписи с сертификатом под именем Shipping04. Подпись хранится в DataSignature. Сертификат Shipping04 передается в Cert_ID, которая возвращает идентификатор сертификата в базу данных. Если VerifySignedByCert возвращает 1, подпись верна. Если же VerifySignedByCert возвращает 0, данные в Signed_Data не являются теми данными, которые использовались для формирования DataSignature. В этом случае либо Signed_Data были изменены с момента подписи, либо Signed_Data были подписаны с другим сертификатом.
SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),
Signed_Data, DataSignature ) AS IsSignatureValid
FROM [AdventureWorks2022].[SignedData04]
WHERE Description = N'data signed by certificate ''Shipping04''';
GO
B. Возвращение только записей, имеющих действительную подпись
Этот запрос возвращает только те записи, которые не менялись с тех пор, как они были подписаны с использованием сертификата Shipping04.
SELECT Data FROM [AdventureWorks2022].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO
См. также
CERT_ID (Transact-SQL)
SIGNBYCERT (Transact-SQL)
СОЗДАТЬ СЕРТИФИКАТ (Transact-SQL)
СЕРТИФИКАТ ALTER (Transact-SQL)
СЕРТИФИКАТ DROP (Transact-SQL)
СЕРТИФИКАТ BACKUP (Transact-SQL)
Иерархия средств шифрования