zoukankan      html  css  js  c++  java
  • 教你怎樣實現SQL密文加密,不可反編譯

    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 個資料列受到影響 )

    */

  • 相关阅读:
    Django学习-9-ORM多对多操作
    Django学习-8-模板渲染的一些特性
    Django学习-7-ORM操作
    Django学习-6-路由系统
    Hadoop 知识
    最全的Spark基础知识解答
    windows server 2008 R2 远程连接用户数修改
    Windows 2008 R2 SP1部署WSUS 3.0 SP2
    Windows Server2008 R2 设置NAT 让Hyper-V连接Internet
    免费好用的Microsoft iSCSI Software Target 3.3
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463087.html
Copyright © 2011-2022 走看看