0

我在我的一台 SQL 服务器 (2008) 上创建了一个非对称密钥。我加密了一个密码字段,并且能够在我的开发服务器上很好地检索该密码。

当我需要将这些数据移动到生产服务器时,问题就出现了。

这是创建的密钥的代码:

CREATE MASTER KEY ENCRYPTION BY PASSWORD='#########'
CREATE ASYMMETRIC KEY UserEncryptionKey
WITH ALGORITHM = RSA_2048

现在,当我在生产服务器上运行它时,它会很好地创建密钥。但是,当我运行我的存储过程来获取密码时,它返回 NULL。

SQL:

    SELECT EncryptByAsymKey(AsymKey_ID('UserEncryptionKey'), Password ) 
    FROM Users WHERE UserName = '######'

关于我需要做什么才能让加密字段在多个 SQL Server 上工作有什么想法吗?

如果我需要澄清一些事情,请告诉我。

谢谢

4

1 回答 1

0

不要将加密数据从一个数据库移动到另一个数据库。从技术上讲是可能的,没错,但你可能会在这个过程中破坏密钥,所以我宁愿不告诉你如何去做。

在站点之间交换数据时,通常的过程将密钥管理和部署与数据传输分开。数据在传输之前被解密,并使用专用的数据传输加密方案,如 TLS 和 SSL,从而消除了部署和共享实际加密密钥的问题。

作为旁注,通常不会使用非对称密钥加密数据。它们对于数据操作来说太慢了。每个人所做的是他们用对称密钥加密数据,然后用非对称密钥加密对称密钥。

于 2010-05-10T23:30:41.157 回答