Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SQL Server 2008 R2中加密列_Sql Server_Encryption_Sql Server 2008 R2 - Fatal编程技术网

Sql server 如何在SQL Server 2008 R2中加密列

Sql server 如何在SQL Server 2008 R2中加密列,sql-server,encryption,sql-server-2008-r2,Sql Server,Encryption,Sql Server 2008 R2,我将为我的SQL Server使用共享主机。我想加密主键列(自动生成的ID)和varchar列。我四处寻找,发现了TDE。但是,作为一个共享主机,我不能使用它。因此,我们正在寻找任何替代方案。数据已经存在于表中,所以现在无法从应用程序进行加密。还有许多SQL语句使用上述varchar列进行搜索。因此,性能也是一个问题 谢谢, 发展 加密主键列(自动生成的ID) 如果记录的ID是加密的,您将如何找到记录??回答“我用加密的身份证偷了你的钥匙”会取消你的资格 现在是真正的问题。您说过您将在共享主机上

我将为我的SQL Server使用共享主机。我想加密主键列(自动生成的ID)和varchar列。我四处寻找,发现了TDE。但是,作为一个共享主机,我不能使用它。因此,我们正在寻找任何替代方案。数据已经存在于表中,所以现在无法从应用程序进行加密。还有许多SQL语句使用上述varchar列进行搜索。因此,性能也是一个问题

谢谢, 发展

加密主键列(自动生成的ID)

如果记录的ID是加密的,您将如何找到记录??回答“我用加密的身份证偷了你的钥匙”会取消你的资格

现在是真正的问题。您说过您将在共享主机上部署,但您没有提到ecnryption将提供什么样的保护。问题在于密钥管理。数据将使用密钥加密,服务器需要以某种方式解密该dtaa。无论您如何解决这个问题,用于解密所有其他密钥的根密钥也将位于共享主机上,因此您在访问数据的过程中只会遇到一点小麻烦。要设置围栏,必须从共享主机范围之外的某个地方检索密钥,例如,在与用户交互时,您的应用程序将请求密码来解密根密钥,这在实际操作中是不可能的。注意 TDE解决不了任何问题,因为信任根在TDE或列式加密中也有同样的问题。如果您需要隐私,请使用私人托管

要回答这个问题:

  • 加密您使用的数据
  • 要解密数据,请使用
  • 加密密钥应使用证书加密,证书应使用密码或数据库主密钥加密。看
  • 您可以使用在会话中打开加密密钥
  • 您可以使用在会话中打开主密钥
  • 通过创建哈希并搜索哈希来搜索加密的dtaa,请参见
如果使用列式加密,则不会加密主键。这样做完全没有意义。在共享托管环境中要求任何形式的隐私都是白日梦。充其量,你唯一能保护agfainst的就是意外的媒体丢失(主机硬盘出现在跳蚤市场)。

Dev, 我认为在您的情况下,唯一的选择是从应用程序加密

或者,您可以重命名表,替换视图而不是重命名的表。加密所有现有数据: 更新实表集合字段1=调用加密函数(字段1),字段2=调用加密函数(字段2)
在该视图中,您可以从real_表中选择call_decrypt_函数(field1)、call_decrypt_函数(field2)。对于插入和更新,您需要掌握而不是插入和更新触发器。当然,您需要对该对象使用加密。我在XP_CRYPT中看到了这种方法,但是我更喜欢免费的解决方案。SQL Server免费提供基本加密功能。

对自动生成的ID密钥进行加密可以实现什么目的?