我在另一个数据库上遇到对称密钥恢复问题。 我在第一个(旧)数据库中有加密列的表。(该表包含加密数据) 旧数据库中的密钥已使用下一个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。我知道我可以解密数据然后重新创建密钥(提供所有参数)并使用新密钥加密数据。但是找到另一种解决方案会很棒。
答案 0 :(得分:0)
就我而言,对称密钥在数据库级别是安全的,通常被认为是在其中创建的数据库。
注意:对称密钥只解密自身加密的数据,因此通过删除现有的对称密钥,您将无法访问由删除的对称密钥加密的数据。
为避免此类问题,通常我们创建包含所有可用对称密钥的数据库备份。如果丢失了对称密钥,则恢复数据库备份将再次检索所有密钥。