12/9/11

Tạo một hàm mã hoá với T-SQL

Trong SQL hỗ trợ lập trình với T-SQL, bạn có thể tạo các hàm xử lý chuổi hoặc những vấn đề (đa số liên quan đến chuổi).
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.


1. Hàm mã hóa ký tự
CREATE    FUNCTION fuMaHoaString 
    
(@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

Ví dụ:  SELECT dbo.fuMaHoaString('abc123',1Sẽ trả về 'uNw F '

2. Hàm giải mã hàm đã mã hóa ở trên.

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 fuGiaiMaKyTuDaMaHoa
    
(@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 
 
 Ví dụ:  SELECT dbo.fuGiaiMaKyTuDaMaHoa(dbo.fuMaHoaString('abc123',1),1) Sẽ trả về abc123
Theo congdongcviet
Bookmark and Share

0 comments:

Post a Comment

Next previous home

Cộng đồng yêu thiết kế Việt Nam Thiet ke website, danang