我想实现这种需求
1.每个人输入的数据保存在数据库中都是加密保存的 但是他本人有权利可以看到真实内容
2.他的上级主管(若干人)可以看到他的信息内容
3.部门之间不能查看 也就是别的部门的主管不能看到其他部门的员工信息.sql server2005加密内容是用 公钥加密 私钥解密的 也就是要让别人看到我的内容 必须要把私钥给别人, 这样很不好 有没有用私钥加密 公钥解密的方法?

解决方案 »

  1.   

    数据库 里面不好实现 ,但你可以在前台可以控制这些的亚!比如:在查询的时候可以控制语句的阿比如说 
    select *from t where id ='谁'
      

  2.   

    sql server2005加密内容是用 公钥加密 私钥解密的 也就是要让别人看到我的内容 必须要把私钥给别人
    你说的是非对称加密. 非对称加密不适用于加密大量数据.
    可以考虑对称加密.
    每个人使用的对称加密密钥放在一个表中, 这个表对应了密钥和该密钥可以被那些人使用. 
    对应的, 要求每个人用非对称加密方式把自己能使用的对称密钥加密一次.
    这样对称密钥是安全的, 并且能够达到楼主的要求.
      

  3.   

    还有一个问题得搞搞清楚:
    你针对的是数据库本身的用户还是你的前端程序的用户?
    如果是数据库本身的用户,sqlserver2005应该有一套授权的机制的。
      

  4.   

    zjcxc(邹建) 说的方法很不错,对于你这种情况,用对称密钥,再将密钥分发给允许查看的人