快速概览:SQL Server 2008 支持非对称密钥加密,使用 CREATE ASYMMETRIC KEY 命令创建公钥和私钥对。基本步骤:1. 创建主密钥 CREATE MASTER KEY ENCRYPTION BY PASSWORD = '密码'; 2. 创建非对称密钥 CREATE ASYMMETRIC KEY MyAsymKey WITH ALGORITHM = RSA_2048 ENCRYPTION BY PASSWORD = '密码'; 3. 加密数据:使用 EncryptByAsymmetricKey 函数;4. 解密:使用 DecryptByAsymmetricKey 函数。示例代码:DECLARE @ciphertext varbinary(256); SET @ciphertext = EncryptByAsymmetricKey(AsymKey_ID('MyAsymKey'), '机密数据'); SELECT DecryptByAsymmetricKey(AsymKey_ID('MyAsymKey'), @ciphertext) AS PlainText;
创建非对称密钥
在 SQL Server 2008 中,非对称密钥使用 RSA 算法生成公钥和私钥对。语法:CREATE ASYMMETRIC KEY 密钥名 WITH ALGORITHM = RSA_512 | RSA_1024 | RSA_2048 ENCRYPTION BY PASSWORD = '强密码'; 示例:CREATE ASYMMETRIC KEY Sales09 FROM EXECUTABLE FILE = 'c:\Sales09.pvk', EXECUTABLE FILE = 'c:\Sales09.pub';
加密和解密数据
加密:EncryptByAsymmetricKey (Asym_Key_ID, plaintext) 返回 varbinary。解密:DecryptByAsymmetricKey (Asym_Key_ID, ciphertext) 返回 nvarchar。注意:非对称密钥适合小数据加密,如证书或密钥备份,不适合大批量数据。
备份和恢复密钥
备份私钥:BACKUP ASYMMETRIC KEY MyAsymKey TO FILE = 'c:\MyAsymKey.pvk' ENCRYPTION BY PASSWORD = '密码'; 恢复:CREATE ASYMMETRIC KEY MyAsymKey FROM FILE = 'c:\MyAsymKey.pvk' DECRYPTION BY PASSWORD = '密码';
使用场景
非对称密钥常用于加密对称密钥,然后用对称密钥加密数据,提高性能。SQL Server 2008 中,可用于 Transparent Data Encryption (TDE) 的证书保护。
权限和安全
需要 CONTROL ASYMMETRIC KEY 权限。密钥存储在数据库中,受主密钥保护。定期轮换密码,避免弱密码。
常见错误
错误 15581:密钥未打开,使用 OPEN ASYMMETRIC KEY MyAsymKey DECRYPTION BY PASSWORD = '密码';。RSA_512 已弃用,推荐 RSA_2048。
FAQ
Q: 非对称密钥能加密多大数据?
A: 最大约 245 字节,取决于密钥强度。
Q: 如何删除非对称密钥?
A: DROP ASYMMETRIC KEY 密钥名;
Q: 公钥能导出吗?
A: 是,使用 BACKUP ASYMMETRIC KEY TO FILE 只备份私钥,公钥可单独导出。
Q: 支持哪些算法?
A: RSA_512, RSA_1024, RSA_1920, RSA_2048。