我想在我的数据库中使用sql服务器加密和解密。我阅读了许多与此相关的文章,我也在我的sql服务器中尝试过这一点。最后我试了一下Symmetric Key和Transparent Data Encryption。对称密钥也称为基于字段/单元格的安全性,在这种安全性中,sys.symmetric_keys表中的密钥保存和具有管理员权限的人可以查看该密钥并使用该密钥;第二种是在certificate + private key + Encription By Password上工作的TDS,它基本上用于保护我们的数据库,就像有人拥有我的数据库备份一样,如果有人有我的数据库备份,那么他们就无法在不了解certificate + private key文件和Encription By Password的情况下恢复该密钥。这些都是我在使用Symmetric key and TDS时了解到的要点。根据我的研究,我知道TDS是高度安全的,但是Symmetric key并不安全,因为它将密钥保存在数据库中。
因此,我想知道,我在下面提到的步骤在Symmetric Key拓扑中是可能的。如果是,那么怎么做,如果不是,那么实现同一件事的其他方法是什么?
UPDATE dbo.tablename SET CARDnumber_encrypted= EncryptByKey(Key_GUID('CreditCards_Key'), FirstName);我如何在Key_GUID('CreditCards_Key')中使用一些额外的变量,这样如果某个变量有键,那么他们仍然不能decrypt字段。我甚至可以使用来自前端的加密技术,比如加密前端的值,然后将其保存到后端,为了再次解密该字段,我将在前端执行该操作,但我希望将所有内容都存储到后端,而不是前端。
因此,请指导我如何才能实现我提到的这些观点。如果你不明白我的意思,请再问我一次。
任何帮助都将是学徒。
发布于 2016-04-05 12:13:02
ENCRYPTBYKEY()函数接受文献资料中指定的可选身份验证器。所述的目的是,当知道明文的某些固有属性时,避免将一个加密值全盘替换为另一个加密值(所引用的例子是一个加密薪资栏,并且知道CFO的薪酬高于复制室中的雇员)。
但是,没有什么可以阻止您使用相同的机制来使用没有存储在数据库中的静态身份验证器作为一种密码。如果不能在解密时提供身份验证器,则会导致解密失败。
https://stackoverflow.com/questions/36420283
复制相似问题