【叶子函数分享五十六】对字符串进行加密解密

create view v_rand

as

    select 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):返回为实际字符串,即加密字符串解密后的原来字符串

*/

As

begin

    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)

end

go

 

--测试

declare @tempstr varchar(20)

set @tempstr='  1 2   3aA'

select '原始值:',@tempstr

select '加密后:',dbo.f_jmstr(@tempstr,0)

select '解密后:',dbo.f_jmstr(dbo.f_jmstr(@tempstr,0),1)

 

--输出结果

/*

原始值:      1 2   3aA

加密后:    __0'15`'17__°{1

解密后:      1 2   3aA

*/

 

本文来自CSDN博客,转载请标明出处:

http://blog.csdn.net/callzjy/archive/2004/05/21/20071.aspx

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值