• 教你怎樣實現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 個資料列受到影響 )

    */

  • 相关阅读:
    IDEA在编辑时提示could not autowire
    python基础——使用__slots__
    python基础——实例属性和类属性
    python基础——继承和多态
    python基础——访问限制
    python基础——面向对象编程
    python基础——第三方模块
    python基础——使用模块
    python基础——模块
    Python tkinter调整元件在窗口中的位置与几何布局管理
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463087.html
Copyright © 2020-2023  润新知