高分求一个sql写的des加密算法存储过程,分不够再加。用于 sql server

解决方案 »

  1.   

    为什么非要在sql里面写,程序里面写减少服务器负担
      

  2.   

    是啊,为什么要在SQL里面写啊,这样不是搞复杂了吗
      

  3.   

    程序里面,服务器里面都要写。防止别人直接监听获取我的明文。
    这个算法的用途是用作软件使用权的网络验证,防爆破组成的一部分。顺便说下我的做法,看看大家有什么可以指点的,欢迎扔砖头
    随机生成一个密匙B
    对密匙B加密
    假设B为:000,使用固定密匙'999'des加密得到B'现在利用B'作为密匙对需要传输的重要数据A进行des加密
    假设A为:1111111,使用密匙B'加密得到A'密匙B和重要数据A都加密后,才返回给客户端
    那么客户端接收到的数据就是A'和B'
    由于B是随机生成的,所以B'每次都不一样
    B'每次不一样,那么A'也每次不一样
    这样爆破手每次捕捉到的数据都不一样,会增加他的爆破难度
      

  4.   

    上面的打错字了
    这个为准
    ----------------------------------随机生成一个密匙B
    对密匙B加密
    假设B为:000,使用固定密匙'999'des加密得到B'现在利用B作为密匙对需要传输的重要数据A进行des加密
    假设A为:1111111,使用密匙B加密得到A'密匙B和重要数据A都加密后,才返回给客户端
    那么客户端接收到的数据就是A'和B'
    由于B是随机生成的,所以B'每次都不一样
    B每次不一样,那么A'也每次不一样---------------
    客户端还原过程:
    B'利用固定密匙'999'还原成B
    A'利用B再还原成A
      

  5.   

     
    1.用Delphi写一个MSSQL可识别的dll
    2.在MSSQL中挂接
     
      

  6.   

    SET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fn_PwdCrypt]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[fn_PwdCrypt]GO CREATE FUNCTION dbo.fn_PwdCrypt(@ptSource varchar(255), @ptPassword varchar(255)) RETURNS varbinary(64)BEGIN             DECLARE @tdest                                 varchar(255),                                    @lteller                         int,                                    @lPasswTeller   int,                                    @cnt                            int,                                    @len                             int,                                    @tFinal                         varbinary(64)             SELECT @tFinal = Convert(varbinary(64),'')            SELECT @len = Len(@ptSource)            SELECT @lteller = 1            SELECT @tdest = @ptSource            SELECT @lPasswTeller = 0             WHILE @lteller <= @len            BEGIN            SELECT @lPasswTeller = @lPasswTeller - 1            If @lPasswTeller < 1                                     SELECT @lPasswTeller = Len(@ptPassword)                         SELECT @tfinal = @tfinal + Convert(varbinary(64),Stuff(Substring(@tdest, @lteller, 1),1,Len( Char(Ascii(Substring(@ptSource, @lteller, 1)) ^ Ascii(Substring(@ptPassword, @lPasswTeller, 1)))), Char(Ascii(Substring(@ptSource, @lteller, 1)) ^ Ascii(Substring(@ptPassword, @lPasswTeller, 1))) ) )                        SELECT @lteller = @lteller + 1            END            RETURN @tfinal   END GOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fn_PwdDeCrypt]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[fn_PwdDeCrypt]GO CREATE FUNCTION dbo.fn_PwdDeCrypt(@ptSource varchar(255), @ptPassword varchar(255)) RETURNS varchar(255)BEGIN             DECLARE @tdest                                 varchar(255),                                    @lteller                         int,                                    @lPasswTeller   int,                                    @cnt                            int,                                    @len                            int,                                    @tFinal                         varchar(255)             SELECT @tFinal = ''            SELECT @len = Len(@ptSource)            SELECT @lteller = 1            SELECT @tdest = @ptSource            SELECT @lPasswTeller = 0             WHILE @lteller <= @len            BEGIN            SELECT @lPasswTeller = @lPasswTeller - 1            If @lPasswTeller < 1                                     SELECT @lPasswTeller = Len(@ptPassword)                         SELECT @tfinal = @tfinal + Left(Stuff(substring(@tdest, @lteller, 1),1,Len( Char(Ascii(substring(@ptSource, @lteller, 1)) ^ Ascii(Substring(@ptPassword, @lPasswTeller, 1)))), Char(Ascii(Substring(@ptSource, @lteller, 1)) ^ Ascii(Substring(@ptPassword, @lPasswTeller, 1))) ), 1)                        SELECT @lteller = @lteller+1            END            RETURN @tfinal END GOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GO --Test it herecreate table #temp            ( pwd varbinary(64)) insert into #temp (pwd)select dbo.fn_PwdCrypt ('MyPassword','secret') select pwd from #tempselect dbo.fn_PwdDeCrypt (pwd,'secret') from #tempdrop table #temp
     
    DES Encryption/Decryption Function
      

  7.   

    hongqi162,厉害。这样的好东西,你应该开博传授,不应该独自享用