当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 流量分析软件 access数据库有三个字段:ip地址,对方ip地址,传送数据包字节。 行数一般为2~4十万行。 目的:现要对其中的每一个ip进行统计总传送和接收的数据包字节总和。 方法:for循环到每一个ip, 进行select sum(传送数据包字节) from db where ip=ip地址 select sum(传送数据包字节) from db where ip=对方ip地址......
    摘要: 哪位高手大哥给我推荐几本flash 3d制作方面写得比较好的书 还有我想学习coreldraw,也给推荐几本吧,特别是关于3d绘图方面的 谢谢了:) ......


存储过程的加密(保护)问题,请高手回复

我开发的系统,其大部分的算法和逻辑都是写在后台的,软件分发后,这些存储过程都是“裸露”的,如何加密呢?

NO.1   作者: yelook

解密:  
  create         PROCEDURE     sp_decrypt_sp     (@objectName     varchar(50))      
  AS      
  DECLARE         @OrigSpText1     nvarchar(4000),         @OrigSpText2     nvarchar(4000)     ,     @OrigSpText3     nvarchar(4000),     @resultsp     nvarchar(4000)      
  declare         @i     int     ,     @t     bigint      
     
  --get     encrypted     data      
  SET     @OrigSpText1=(SELECT     ctext     FROM     syscomments         WHERE     id     =     object_id(@objectName))      
  SET     @OrigSpText2=ALTER     PROCEDURE     +     @objectName     +     WITH     ENCRYPTION     AS     +REPLICATE(-,     3938)      
  EXECUTE     (@OrigSpText2)      
     
  SET     @OrigSpText3=(SELECT     ctext     FROM     syscomments         WHERE     id     =     object_id(@objectName))      
  SET     @OrigSpText2=CREATE     PROCEDURE     +     @objectName     +     WITH     ENCRYPTION     AS     +REPLICATE(-,     4000-62)      
     
  --start     counter      
  SET     @i=1      
  --fill     temporary     variable      
  SET     @resultsp     =     replicate(NA,     (datalength(@OrigSpText1)     /     2))      
     
  --loop      
  WHILE     @i     <=datalength(@OrigSpText1)/2      
  BEGIN      
  --reverse     encryption     (XOR     original+bogus+bogus     encrypted)      
  SET     @resultsp     =     stuff(@resultsp,     @i,     1,     NCHAR(UNICODE(substring(@OrigSpText1,     @i,     1))     ^      
                                                                                                                                (UNICODE(substring(@OrigSpText2,     @i,     1))     ^      
                                                                                                                                UNICODE(substring(@OrigSpText3,     @i,     1)))))      
                        SET     @i=@i+1      
  END      
  --drop     original     SP      
  EXECUTE     (drop     PROCEDURE     +     @objectName)      
  --remove     encryption      
  --preserve     case      
  SET     @resultsp=REPLACE((@resultsp),WITH     ENCRYPTION,     )      
  SET     @resultsp=REPLACE((@resultsp),With     Encryption,     )      
  SET     @resultsp=REPLACE((@resultsp),with     encryption,     )      
  IF     CHARINDEX(WITH     ENCRYPTION,UPPER(@resultsp)     )     >0          
        SET     @resultsp=REPLACE(UPPER(@resultsp),WITH     ENCRYPTION,     )      
  --replace     Stored     procedure     without     enryption      
  execute(     @resultsp)      
  GO  
   
  加密:  
  CREATE   PROCEDURE   encrypt_this  
  WITH   ENCRYPTION  
  AS  
  SELECT   *    
  FROM   authors  
  GO

NO.2   作者: pengdali

--------------------4000以内---------------  
  create         PROCEDURE     sp_decrypt_sp     (@objectName     varchar(50))      
  AS      
  DECLARE         @OrigSpText1     nvarchar(4000),         @OrigSpText2     nvarchar(4000)     ,     @OrigSpText3     nvarchar(4000),     @resultsp     nvarchar(4000)      
  declare         @i     int     ,     @t     bigint      
     
  --get     encrypted     data      
  SET     @OrigSpText1=(SELECT     ctext     FROM     syscomments         WHERE     id     =     object_id(@objectName))      
  SET     @OrigSpText2=ALTER     PROCEDURE     +     @objectName     +     WITH     ENCRYPTION     AS     +REPLICATE(-,     3938)      
  EXECUTE     (@OrigSpText2)      
     
  SET     @OrigSpText3=(SELECT     ctext     FROM     syscomments         WHERE     id     =     object_id(@objectName))      
  SET     @OrigSpText2=CREATE     PROCEDURE     +     @objectName     +     WITH     ENCRYPTION     AS     +REPLICATE(-,     4000-62)      
     
  --start     counter      
  SET     @i=1      
  --fill     temporary     variable      
  SET     @resultsp     =     replicate(NA,     (datalength(@OrigSpText1)     /     2))      
     
  --loop      
  WHILE     @i     <=datalength(@OrigSpText1)/2      
  BEGIN      
  --reverse     encryption     (XOR     original+bogus+bogus     encrypted)      
  SET     @resultsp     =     stuff(@resultsp,     @i,     1,     NCHAR(UNICODE(substring(@OrigSpText1,     @i,     1))     ^      
                                                                                                                                (UNICODE(substring(@OrigSpText2,     @i,     1))     ^      
                                                                                                                                UNICODE(substring(@OrigSpText3,     @i,     1)))))      
                        SET     @i=@i+1      
  END      
  --drop     original     SP      
  EXECUTE     (drop     PROCEDURE     +     @objectName)      
  --remove     encryption      
  --preserve     case      
  SET     @resultsp=REPLACE((@resultsp),WITH     ENCRYPTION,     )      
  SET     @resultsp=REPLACE((@resultsp),With     Encryption,     )      
  SET     @resultsp=REPLACE((@resultsp),with     encryption,     )      
  IF     CHARINDEX(WITH     ENCRYPTION,UPPER(@resultsp)     )     >0          
        SET     @resultsp=REPLACE(UPPER(@resultsp),WITH     ENCRYPTION,     )      
  --replace     Stored     procedure     without     enryption      
  execute(     @resultsp)      
  GO

NO.3   作者: wellhead

建议说一下原理更实在,不要贴得乱七八糟的!

NO.4   作者: ft

大力:我把存储过程加密,然后生成你的存储过程,但是解密不成功的.

NO.5   作者: happydreamer

有个软件Decryptor可以解密   加密的存储过程   触发器


 ·来吧,祝我生日快乐吧    »显示摘要«
    摘要: 特别感谢 老妈在二十几年前的今天带我来到这个美丽的世界! 三个生日愿望: 1、祝愿亲爱的爸妈身体健康,皱纹能再少点 2、祝愿我所有的朋友们快乐的过好每一天,收获多多 3、祝愿csdn越办越好 好了,不多说了,祝我生日快乐吧! :) ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE