OPEN SYMMETRIC KEY (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。
如果所提供的用于解密对称密钥的密码、证书或密钥不正确,则查询将失败。
权限
调用方必须具有对密钥的某些权限,并且不得被拒绝对密钥的 VIEW 权限。其他权限要求因解密机制的而异:
- DECRYPTION BY CERTIFICATE:具有对证书的 CONTROL 权限并且知道加密其私钥的密码。
- DECRYPTION BY ASYMMETRIC KEY:具有对非对称密钥的 CONTROL 权限并知道加密其私钥的密码。
- DECRYPTION BY PASSWORD:知道用于加密对称密钥的密码之一。
示例
A. 使用证书打开对称密钥
以下示例使用 MarketingCert9
证书的私钥打开对称密钥 SymKeyMarketing3
并对其进行解密。
USE AdventureWorks;
OPEN SYMMETRIC KEY SymKeyMarketing3
DECRYPTION BY CERTIFICATE MarketingCert9;
GO
B. 使用另一对称密钥打开对称密钥
以下示例使用对称密钥 HarnpadoungsatayaSE3
打开对称密钥 MarketingKey11
并对其进行解密。
USE AdventureWorks;
-- 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
请参阅
参考
CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
CLOSE SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)