【发布时间】:2010-10-10 09:36:00
【问题描述】:
我们最近在 MS SQL 2005 中实现了一些对称密钥,用于加密和解密信用卡、检查路由/帐号。
理想情况下,我们希望用户定义的函数能够执行加密和解密,但是这是不可能的,因为 encryptbykey 和 decryptbykey 函数不能在用户定义的函数中使用。
最初我认为我们可以创建一个带有函数的 CLR 程序集(在 C# 中)来执行此操作,但是,因为我了解到适用相同的规则。
我想知道其他人一直在做什么来轻松执行此功能。创建许多存储过程,例如:
打开对称键...
选择用户名,decryptByKey(...) AS 密码
关闭对称键...
...对于我们将加密/解密的许多领域来说,这将是非常乏味的。
【问题讨论】:
-
您在解密密码?真的吗?你知道那根本不是好的设计。密码应该是单向散列的。可解密的密钥会使数据库中的每个密码都容易受到攻击。
-
好吧,我主要将它用于信用卡号码,并检查路由/帐号。
-
如果您正在处理此类敏感信息,我强烈建议您对加密/安全性进行一些研究。做好准备总比后悔好!
-
我使用 rot13 两次以获得额外保护! :D
-
@Will 一些数据库确实将密码存储到其他系统,例如 gmail 的 pop3 获取服务。我会说尽可能晚地进行解密并尽早进行加密。在某些时候,数据库不是解密数据的安全场所。
标签: c# sql-server encryption assemblies clr