教你怎樣實現SQL密文加密,不可反編譯

來源:互聯網
上載者:User




use
Tempdb

go

if
object_ID
(
'fn_ACITEncryption'
)
is
not
null

   
drop
function
fn_ACITEncryption

go

create
function
fn_ACITEncryption

(

   
@Str nvarchar
(
4000),
--

加密的字串

   
@Flag bit
=
1,
--1

、加密
0
、解密

   
@Key nvarchar
(
50)
--

密文

)

returns
nvarchar
(
4000)
--

這裡可轉換成二進制

with
Encryption

as

begin

Declare
@LenStr int
,
@i int
,
@Str2 nvarchar
(
4000),
@Split nvarchar
(
2),
@LenKey int

select
@Str=
@Str+
'A'
,
@LenStr=
len
(
@Str),
@i=
1,
@Str2=
''
,
@LenKey=
Len
(
@Key+
'A'
)-
1

while
@i<
@LenStr

       
select
   

@Split=
substring
(
@Str,
@i,
1),

               

@Split=
nchar
((
unicode
(
@Split)+
case
@Flag   
when
1 then
unicode
(
substring
(
@Key+
'A'
,
@i%
@LenKey+
1,
1))-
1                                               

                                                   

when
0 then
65535-
unicode
(
substring
(
@Key+
'A'
,
@i%
@LenKey+
1,
1))

                                                   

else
0 end
)%
65535+
cast
(
@Flag as
int
)),

 
              
@Str2=
@Str2+
@Split,
@i=
@i+
1

return
@Str2

 

end

go

select
dbo.
fn_ACITEncryption(
N'Roy'
,
1,
'123'
)
as

加密後字串

 

/*

加密後字串

------------------------------

(1
個資料列受到影響
)

 

*/

select
dbo.
fn_ACITEncryption(
N,
0,
'123'
)
as

解密後字串

/*

解密後字串

--------------------------

Roy

 

(1
個資料列受到影響
)

*/

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.