create view v_rand
as
select c=unicode(cast(round(rand()*) as tinyint))
go
create function f_jmstr(@str varchar()@type bit)returns varchar()
/*
*参数说明
*str:要加密的字符串或已经加密后的字符
*type:操作类型加密解密
*返回值说明
*当操作类型为加密时(type):返回为加密后的str即存放于数据库中的字符串
*当操作类型为解密时(type):返回为实际字符串即加密字符串解密后的原来字符串
*/
As
begin
declare @re varchar()返回值
declare @c int加密字符
declare @i int
/*
*加密方法为原字符异或一个随机ASCII字符
*/
if @type=加密
begin
select @c=c@re=@i=len(@str) from v_rand
while @i>
select @re=nchar(unicode(substring(@str@i))^@c^@i)+@re
@i=@i
set @re=@re+nchar(@c)
end
else解密
begin
select @i=len(@str)@c=unicode(substring(@str@i+))@re=
while @i>
select @re=nchar(unicode(substring(@str@i))^@c^@i)+@re @i=@i
end
return(@re)
end
go
测试
declare @tempstr varchar()
set @tempstr= aA
select dbof_jmstr(dbof_jmstr(@tempstr))
输出结果
aA
(完)