OPEN SYMMETRIC KEY (Transact-SQL)

解密对称密钥并使其可供使用。

主题链接图标Transact-SQL 语法约定

语法

OPEN SYMMETRIC KEY Key_name DECRYPTION BY <decryption_mechanism>

<decryption_mechanism> ::=
    CERTIFICATE certificate_name [ WITH PASSWORD = 'password' ]
    |
    ASYMMETRIC KEY asym_key_name [ WITH PASSWORD = 'password' ]
    |
    SYMMETRIC KEY decrypting_Key_name
    |
    PASSWORD = 'decryption_password'

参数

  • Key_name
    要打开的对称密钥的名称。

  • CERTIFICATE certificate_name
    证书的名称,该证书的私钥将用于解密对称密钥。

  • ASYMMETRIC KEY asym_key_name
    非对称密钥的名称,该密钥的私钥将用于解密对称密钥。

  • WITH PASSWORD = 'password'
    用于解密证书或非对称密钥的私钥的密码。

  • SYMMETRIC KEY decrypting_key_name
    对称密钥的名称,该密钥将用于解密正在打开的对称密钥。

  • PASSWORD = 'password'
    用于保护对称密钥的密码。

注释

打开的对称密钥将绑定到会话而不是安全上下文。打开的密钥将持续有效,直到它显式关闭或会话终止。如果您打开一个对称密钥然后切换上下文,则该密钥将保持打开状态并在模拟的上下文中可用。有关打开对称密钥的信息,请参阅 sys.openkeys (Transact-SQL) 目录视图。

如果对称密钥由另一个密钥加密,则必须首先打开该密钥。

如果对称密钥已打开,则查询为 NO_OP。

如果所提供的用于解密对称密钥的密码、证书或密钥不正确,则查询将失败。

无法打开使用加密提供程序创建的对称密钥。没有 OPEN 语句,使用此类对称密钥的加密和解密操作也会成功,因为加密提供程序正在打开和关闭密钥。

权限

调用方必须具有对密钥的某些权限,并且必须未被拒绝授予对密钥的 VIEW DEFINITION 权限。其他权限要求因解密机制的而异:

  • DECRYPTION BY CERTIFICATE:具有对证书的 CONTROL 权限并且知道加密其私钥的密码。

  • DECRYPTION BY ASYMMETRIC KEY:具有对非对称密钥的 CONTROL 权限并知道加密其私钥的密码。

  • DECRYPTION BY PASSWORD:知道用于加密对称密钥的密码之一。

示例

A. 使用证书打开对称密钥

以下示例使用 MarketingCert9 证书的私钥打开对称密钥 SymKeyMarketing3 并对其进行解密。

USE AdventureWorks2008R2;
OPEN SYMMETRIC KEY SymKeyMarketing3 
    DECRYPTION BY CERTIFICATE MarketingCert9;
GO

B. 使用另一对称密钥打开对称密钥

以下示例使用对称密钥 HarnpadoungsatayaSE3 打开对称密钥 MarketingKey11 并对其进行解密。

USE AdventureWorks2008R2;
-- First open the symmetric key that you want for decryption.
OPEN SYMMETRIC KEY HarnpadoungsatayaSE3 
    DECRYPTION BY CERTIFICATE sariyaCert01;
-- Use the key that is already open to decrypt MarketingKey11.
OPEN SYMMETRIC KEY MarketingKey11 
    DECRYPTION BY SYMMETRIC KEY HarnpadoungsatayaSE3;
GO