用户密码有些用户要求系统加密 ,一定程度上保护系统用户,避免轻易地被盗用,以下是用MSSQL 2000 CODE 写的用户密码解密函数。应用开发工具与MSSQL 有所不同,虽然算法相同 。不能完全得到与应用程序开发工具产生结果相一致。例如:应用程序开发工具可以将一个汉字分割为两部分(两个字节),与MSSQL只能是一部分。[@more@]
alter function fn_creak( @userID varchar(20) )
returns varchar(40)
as
begin
declare @pwd varchar(30) /*加密文件内容*/
declare @str varchar(30) /*接收原密码字符串*/
declare @i int
declare @ii int /* 密钥 十进50,十六进32 */
select @pwd=[passWord] from rt_usersList where userid=@UserID
/* set @pwd='dbbkcjRR' */
set @i=1
set @ii=50
set @str=''
while (@i<=len(@pwd))
begin
set @str=@str + cast( char(ascii( substring(@pwd,@i,1) ) - @ii ) as varchar(30) ) /*解密*/
set @i=@i+1
end
return(@str)
end
select userid,dbo.fn_creak(userid)as pwd,[password],EngName,ChName from rt_usersList where stop='0' --userid='sam'
alter function fn_creak( @userID varchar(20) )
returns varchar(40)
as
begin
declare @pwd varchar(30) /*加密文件内容*/
declare @str varchar(30) /*接收原密码字符串*/
declare @i int
declare @ii int /* 密钥 十进50,十六进32 */
select @pwd=[passWord] from rt_usersList where userid=@UserID
/* set @pwd='dbbkcjRR' */
set @i=1
set @ii=50
set @str=''
while (@i<=len(@pwd))
begin
set @str=@str + cast( char(ascii( substring(@pwd,@i,1) ) - @ii ) as varchar(30) ) /*解密*/
set @i=@i+1
end
return(@str)
end
select userid,dbo.fn_creak(userid)as pwd,[password],EngName,ChName from rt_usersList where stop='0' --userid='sam'
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/729024/viewspace-1027011/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/729024/viewspace-1027011/