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 @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 :D
(@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 :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 DECIPHERSau đây là hàm dịch lại chuổi:
(@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