5

我们有一个带有对称密钥(数据库->安全->对称密钥)的数据库的服务器。我们有一个备份的重复数据库,我们将其用作测试数据库,但我们没有这个密钥。

如何复制此对称密钥(或制作一个与旧密钥完全相同的新密钥)并将其放入现有数据库中?它必须具有与另一个相同的值和键名。

这是在 SQL Server 2008 上。

替代文字

4

1 回答 1

7

当您首先创建对称密钥时,请确保您使用的是 KEY_SOURCE、IDENTITY_VALUE 和 ALGORITHM 参数。

如果您还没有,请创建数据库主密钥和证书以保护您的对称密钥。

-- Create Database Master Key 
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = 'Your Database Master Key Password here' 
GO

-- Create Encryption Certificate 
CREATE CERTIFICATE MyCertificateName
WITH SUBJECT = 'Your Certificate Description Here' 
GO

-- Create Symmetric Key
CREATE SYMMETRIC KEY MyKeyName WITH
IDENTITY_VALUE = 'Enter a key description',
ALGORITHM = AES_256, 
KEY_SOURCE = 'Enter a key phrase here (keep very secret)'
ENCRYPTION BY CERTIFICATE MyCertificateName;
  • IDENTITY_VALUE 参数用于在 sys.symmetric_keys 表中创建 guid,这需要在两个数据库中相同才能工作。

  • KEY_SOURCE 参数用于创建实际的密钥本身,因此请确保它完全相同并受到良好保护。

  • ALGORITHM当然是sql server用什么算法来加密和解密数据,必须相同才能工作。

您应该能够在两个数据库上运行上述脚本(当然替换为您自己的值),它将成功解密在另一个数据库中加密的数据。

如果您现有的密钥不是以这种方式创建的,您将不得不用旧密钥解密所有内容,然后用新密钥重新加密。

可以在这里找到一些关于密钥创建的好资源:

于 2010-04-07T05:02:12.473 回答