日期:2014-05-17  浏览次数:20721 次

SQL 對數據的加解密 要如何實現?
目前做一個系統,要求對有一些數據加密,調用或查詢時的解密。
我這邊設計的是:寫一個加密function ,需解密哪幾個字段就調用這個funciton 就好。

但是主管說,這樣解密的function,一旦其他人也知道,安全性就太低了,必須只能在一個固定的地方調用,其他地方在調用這個function 出來的數據就是解密后的數據。

請問大家對這塊有做過嗎,有什麽好的意見啊?

------解决方案--------------------
没这么用过。
感觉逻辑上好像有点儿问题,按照LZ说的只要一个固定的地方解密,别的地方就可以调用解密后的数据 。 

加密不是主要解决的就是指向性问题吗? 如果是LZ说的方式,不是说没有指向性的要求。这种情况的话,只要做好登录服务器的用户是否就可以达到LZ的需求目标了。
------解决方案--------------------
一些保密性的字段,可以单独去控制列权限。
让指定的用户才可以访问,其它用户不能。
------解决方案--------------------
你应该控制好 服务器的admin 用户 这只有管理员有他的密码
其他人可以根据权限和情况给他开其它用户

数据库里面控制好你的win用户和sql 用户。

控制好权限就就是最好的加密了。
------解决方案--------------------
最简单的方法就是在程序里加密,数据表只保存加密后的值。
然后当你登录的时候,将用户输入的密码加密后,与数据表进行比较,这样比较的都是加密后的值,只要不知道你加密的策略,就无法知道密码,而且不用考虑解密。
另外可以根据你的加密策略,写一个小工具,专门用来防止有人忘记原来的密码,但又要修改新密码。只要用工具生成新的加密后的密码,直接修改数据表即可。

------解决方案--------------------
首先要明确是防止哪些人
------解决方案--------------------
将数据做加密,这样即使DBA有最高权限也无法看到你的数据。

可以参考:http://space.itpub.net/12476590/viewspace-536413
http://technet.microsoft.com/en-us/library/cc278098(v=SQL.100).aspx
------解决方案--------------------
用6楼的吧
------解决方案--------------------
用6楼的吧
------解决方案--------------------
探讨

防开发人员,可以在上线运行后,改密码,算法不用变

------解决方案--------------------
如果是SQL 2008可以使用EncryptByKey这个函数