您的位置:首页 > 数据库

如何实现对数据库单个字段进行加密

2008-05-01 02:17 357 查看
create view v_randasselect c=unicode(cast(round(rand()*255,0) as tinyint))go create function f_jmstr(@str varchar(8000),@type bit)returns varchar(8000)/**参数说明*str:要加密的字符串或已经加密后的字符*type:操作类型--0加密--解密*返回值说明*当操作类型为加密时(type--0):返回为加密后的str,即存放于数据库中的字符串*当操作类型为解密时(type--1):返回为实际字符串,即加密字符串解密后的原来字符串*/Asbegin declare @re varchar(8000)--返回值 declare @c int--加密字符 declare @i int/**加密方法为原字符异或一个随机ASCII字符*/ if @type=0--加密 begin select @c=c,@re='',@i=len(@str) from v_rand while @i>0 select @re=nchar(unicode(substring(@str,@i,1))^@c^@i)+@re ,@i=@i-1 set @re=@re+nchar(@c) end else--解密 begin select @i=len(@str)-1,@c=unicode(substring(@str,@i+1,1)),@re='' while @i>0 select @re=nchar(unicode(substring(@str,@i,1))^@c^@i)+@re ,@i=@i-1 end return(@re)endgo --测试declare @tempstr varchar(20)set @tempstr=' 1 2 3aA'select dbo.f_jmstr(dbo.f_jmstr(@tempstr,0),1)输出结果 1 2 3aA (完)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: