Chủ nhật, ngày 17 tháng 12 năm 2017

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

Ngày đăng: 30/12/2010, 16:38:18AM | Lượt xem: 2,004
Hot!

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 @i = 1
If (@dt = 0)
Set @dt = -1
Set @k = @dt / Abs(@dt)
While (@i <= @lenStr)
Begin
Set @str = @str + Char((Ascii(SubString(@strInput, @i, 1))+@k*20))
Set @k = -@k
Set @i = @i + 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ề ‘uNwF’

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 @i = 1
    If (@dt = 0)
        Set @dt = -1
    Set @k = -@dt / Abs(@dt)  
    While (@i <= @lenStr)
    Begin
        Set @str = @str + Char((Ascii(SubString(@strInput, @i, 1))+@k*20))
        Set @k = -@k
        Set @i = @i + 1 
    End    
    Return @str
END 

 
 Ví dụ:  SELECT dbo.fuGiaiMaKyTuDaMaHoa(dbo.fuMaHoaString(‘abc123′,1),1) Sẽ trả về abc123

http://khoaba.wordpress.com
 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
ca do bong da online
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.