重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
比较简单的做法是数据在存入数据库之前用c#进行加密,然后再存入数据库,读取数据之后,用相应的解密方法对数据进行解密。
成都创新互联公司公司2013年成立,先为江海等服务建站,江海等地企业,进行企业商务咨询服务。为江海企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
但是,如果你一定要在存储过程中加密的话,可以使用c#创建好对应的加密解密方法,然后生成一个加解密的类库dll,在sqlserver中引入该dll中的加密方法进行加密(Sqlserver调用dll的方法sqlserver调用dll),程序中可以直接调用该dll中的解密方法,也可以把解密方法直接写在程序中。
到了SQL Server2005,引入了列级加密。使得加密可以对特定列执行,这个过程涉及4对加密和解密的内置函数
SQL Server 2008时代,则引入的了透明数据加密(TDE),所谓的透明数据加密,就是加密在数据库中进行,但从程序的角度来看就好像没有加密一样,和列级加密不同的是,TDE加密的级别是整个数据库。使用TDE加密的数据库文件或备份在另一个没有证书的实例上是不能附加或恢复的。
就这一点 透明数据加密比列级加密要好用的多。
将那个字段设为主键
------解决方案--------------------------------------------------------
要不然
你只能在逻辑上做判断、先查询数据是否有当前的符号、如果有
就另填。没有的话,就插入
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
要是这个字段不是外键的话,可以设成主键,否则,可以由数据库的标识字段做主键,给这一列
加上唯一约束
------解决方案--------------------------------------------------------
主键或者unique
约束(这个oracle
有,不知sqlserver
有没有)。
这个好像不行吧。
------解决方案--------------------------------------------------------
设主键。用sequence
自增。设置主键
然后也可以写触发器做判断修改
你把你的数据库修改登录时只能用用户名和密码登录,不允许windows登录,然后为他创建一个用户,这个用户赋予的权限你自己选,你想让他看什么就给他权限。不想就别给他赋权限即可。
1、需要看的那种加密会需要在客户端独立设置解密才行,这样加大了编程工作量,数据在传输过程中。
2、高级版本的sqlserver已经加密,特别是帐号密码不是明文传输。
3、加解密过程首先是CPU高开销操作,过度频繁一定会带来性能问题
4、SQL Server 支持安全套接字层 (SSL),并且与 Internet 协议安全 (IPSec) 兼容。所以,sql server是支持在传输数据时进行加密的。
在SQl2005下自带的函数hashbytes() ,此函数是微软在SQL SERVER 2005中提供的,可以用来计算一个字符串的 MD5 和 SHA1 值,使用方法如下:
--获取123456的MD5加密串
select hashbytes('MD5', '123456') ;
--获取123456的SHA1加密串
select hashbytes('SHA1', '123456') ;有了这个函数可以在sqlserver中为字符串进行加密,但是hashbytes() 函数的返回结果是 varbinary类型,(以 0x 开头 16 进制形式的二进制数据)通常情况下,我们需要的都是字符串型的数据,很多人首先想到的可能就是用 CAST 或 Convert 函数将varbinary 转换为 varchar,但这样转换后的结果会是乱码,正确转换 varbinary 可变长度二进制型数据到 16 进制字符串应该使用系统内置函数 sys.fn_varbintohexstr()(只在sqlserver2005下有),如下所示:select sys.fn_varbintohexstr(hashbytes('MD5', '123456'))
然后就可以截取需要的部分select lower(right(sys.fn_varbintohexstr(hashbytes('MD5','123456')),32))为md5加密串。