Cách mã hoá một chuổi nào đó (ví dụ mã hoá password)

Và đây là ví dụ về cách mã hoá một chuổi nào đó (ví dụ mã hoá password). Thực chất của hàm này là thay đổi chuổi nhập vào = chuổi khác theo một quy luật nào đó. Và quy luật ở đây là ký tự ở vị trí lẽ sẽ tăng lên 20*number, ký tự ở vị trí chẵn sẽ giảm đi 20*number.


CREATE    FUNCTION ENCIPHER
    (@strInput nvarchar(200),
     @dt       smallint=-1)  
RETURNS nvarchar(200
AS  
BEGIN 
    Declare @str        nvarchar(200)
    Declare @lenStr        tinyint
    Declare @i        tinyint
    Declare @k        smallint
    Set @lenStr Len(@strInput)
    Set @str ''
    Set @1
    If (@dt 0)
        Set @dt = -1
    Set @= @dt Abs(@dt)  
    While (@<= @lenStr)
    Begin
        Set @str = @str Char((Ascii(SubString(@strInput, @i1))+@k*20))
        Set @= -@k
        Set @= @
    End    
    Return @str
END

//trong hàm trên chỉ cần 1 câu lệnh là quyết định, mấy câu còn lại chỉ để làm mù mắt ai đó mà thôi :D 
Hàm dịch lại cách mã hoá đó thì cũng tương tự thôi (có thể viết tại SQL hoặc tại chương trình khác).

Sau đây là hàm dịch lại chuổi:
CREATE    FUNCTION DECIPHER
    (@strInput nvarchar(200),
     @dt       smallint=-1)  
RETURNS nvarchar(200
AS  
BEGIN 
    Declare @str        nvarchar(200)
    Declare @lenStr        tinyint
    Declare @i        tinyint
    Declare @k        smallint
    Set @lenStr Len(@strInput)
    Set @str ''
    Set @1
    If (@dt 0)
        Set @dt = -1
    Set @= -@dt Abs(@dt)  
    While (@<= @lenStr)
    Begin
        Set @str = @str Char((Ascii(SubString(@strInput, @i1))+@k*20))
        Set @= -@k
        Set @= @
    End    
    Return @str
END