DECRYPTBYCERT (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
此函数使用证书的私钥解密已加密数据。
语法
DecryptByCert ( certificate_ID , { 'ciphertext' | @ciphertext }
[ , { 'cert_password' | @cert_password } ] )
参数
certificate_ID
数据库中证书的 ID。 certificate_ID 具有 int 数据类型。
ciphertext
使用证书的公钥加密的数据的字符串。
@ciphertext
varbinary 类型的变量,包含使用证书进行加密的数据。
cert_password
用于加密证书私钥的密码。 cert_password 必须具有 Unicode 数据格式。
@cert_password
类型为 nchar 或 nvarchar 的变量,其中包含用来加密证书私钥的密码。 @cert_password 必须具有 Unicode 数据格式。
返回类型
varbinary(最大大小为 8,000 个字节)。
备注
此函数用证书的私钥解密数据。 使用非对称密钥进行的加密转换会消耗大量资源。 因此,建议开发人员避免使用 ENCRYPTBYCERT 和 DECRYPTBYCERT 进行用户数据的常规加密/解密。
权限
DECRYPTBYCERT
需要对证书具有 CONTROL 权限。
示例
此示例从 [AdventureWorks2022].[ProtectedData04]
选择行,选择范围标记为最初使用证书 JanainaCert02
加密的数据。 该示例首先使用证书 pGFD4bb925DGvbd2439587y
的密码解密证书 JanainaCert02
的私钥。 然后使用此私钥解密已加密文本。 该示例将解密后的数据从 varbinary 转换为 nvarchar。
SELECT CONVERT(NVARCHAR(max), DecryptByCert(Cert_Id('JanainaCert02'),
ProtectedData, N'pGFD4bb925DGvbd2439587y'))
FROM [AdventureWorks2022].[ProtectedData04]
WHERE Description
= N'data encrypted by certificate '' JanainaCert02''';
GO
另请参阅
ENCRYPTBYCERT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
加密层次结构