如何實現對數據庫單個字段進行加密

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 dbo.f_jmstr(dbo.f_jmstr(@tempstr,0),1) 輸出結果 1 2 3aA
發佈了50 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章