Cấp bậc tác giả:

DATABASE

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

Được viết bởi QuangIT ngày 13/08/2012 lúc 07:20 PM
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).
  • 0
  • 9992

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 @
    
If (@dt 0
        
Set @dt = -
    Set 
@= @dt Abs(@dt)   
    While (@
<= @lenStr
    
Begin 
        Set 
@str = @str Char((Ascii(SubString(@strInput, @i1))+@k*20)) 
        
Set @= -@
        Set 
@= @1  
    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',1)  Sẽ 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 @

    
If (@dt 0

        
Set @dt = -

    Set 
@= -@dt Abs(@dt
)   
    While (@
<= @lenStr

    
Begin 
        Set 
@str = @str Char((Ascii(SubString(@strInput, @i1))+@k*20
)) 
        
Set @= -@

        Set 
@= @
1  
    End     
    
Return @
str 
END 
 
 Ví dụ:  SELECT dbo.fuGiaiMaKyTuDaMaHoa(dbo.fuMaHoaString('abc123',1),1Sẽ trả về abc123

Nguồn bài viết: CongDongCViet

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML