如何在新数据库上恢复对称密钥?

时间:2014-05-20 16:38:12

标签: sql sql-server sql-server-2008 sql-server-2005 encryption

我在另一个数据库上遇到对称密钥恢复问题。 我在第一个(旧)数据库中有加密列的表。(该表包含加密数据) 旧数据库中的密钥已使用下一个sql脚本创建:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'TESTPSWD'
GO
CREATE CERTIFICATE [CertificateSecurity] WITH SUBJECT = 'Key Protection';
GO
CREATE SYMMETRIC KEY [EncryptKey] WITH
    ALGORITHM = AES_256 
    ENCRYPTION BY CERTIFICATE [CertificateSecurity]
GO

现在我必须将此表与所有数据一起移动到新数据库。 我用旧数据库中的数据导入表。 还有一个问题:在没有指定key_source和identity_value的情况下,有没有办法在新数据库中创建相同的加密密钥? (因为我没有) 我尝试使用与上面相同的sql查询创建它,但在这种情况下解密返回NULL。

P.S。我知道我可以解密数据然后重新创建密钥(提供所有参数)并使用新密钥加密数据。但是找到另一种解决方案会很棒。

1 个答案:

答案 0 :(得分:0)

就我而言,对称密钥在数据库级别是安全的,通常被认为是在其中创建的数据库。

注意:对称密钥只解密自身加密的数据,因此通过删除现有的对称密钥,您将无法访问由删除的对称密钥加密的数据。

为避免此类问题,通常我们创建包含所有可用对称密钥的数据库备份。如果丢失了对称密钥,则恢复数据库备份将再次检索所有密钥。