SQL加密

   
     
use Tempdb go if object_ID ( ' fn_ACITEncryption ' ) is not null drop function fn_ACITEncryption go create function fn_ACITEncryption ( @Str nvarchar ( 4000 ), -- 加密的字符串 @Flag bit = 1 , -- 1、加密 0、解密 @Key nvarchar ( 50 ) -- 密文 ) returns nvarchar ( 4000 ) -- 這里可轉換成二進制 with Encryption as begin Declare @LenStr int , @i int , @Str2 nvarchar ( 4000 ), @Split nvarchar ( 2 ), @LenKey int select @Str = @Str + ' A ' , @LenStr = len ( @Str ), @i = 1 , @Str2 = '' , @LenKey = Len ( @Key + ' A ' ) - 1 while @i < @LenStr select @Split = substring ( @Str , @i , 1 ), @Split = nchar (( unicode ( @Split ) + case @Flag when 1 then unicode ( substring ( @Key + ' A ' , @i % @LenKey + 1 , 1 )) - 1 when 0 then 65535 - unicode ( substring ( @Key + ' A ' , @i % @LenKey + 1 , 1 )) else 0 end ) % 65535 + cast ( @Flag as int )), @Str2 = @Str2 + @Split , @i = @i + 1 return @Str2 end go select dbo.fn_ACITEncryption(N ' Roy ' , 1 , ' 123 ' ) as 加密后字符串 /* 加密后字符串 ------------------------------ „¢ª (1 個資料列受到影響) */ select dbo.fn_ACITEncryption(N ' „¢ª ' , 0 , ' 123 ' ) as 解密后字符串 /* 解密后字符串 -------------------------- Roy (1 個資料列受到影響) */

http://blog.csdn.net/roy_88/archive/2009/11/12/4801917.aspx

你可能感兴趣的:(sql)