当前位置: 首页 > 图文教程 > 数据库 > MSSQL > sql server存储过程、存储函数的加密、解密

MSSQL
精通数据库系列之入门:基础篇1
剖析SQL Server 2005查询通知之基础篇
用sp_lock诊断SQL Sever的性能问题
测试SQL Server业务规则链接方法
解析SQL Server数据应用在不同的数据库中
如何使用SQL Server数据库中查询累计值
逐行扫描 为你讲解几个基本SQLPLUS命令
教你一招:MSSQL数据库索引的应用
确定几个SQL Server栏中的最大值
SQL Server 2005分析服务 统一整合视图
如何使用SQL Server嵌套子查询
用TableDiff产生SQL Server同步脚本
小型商业应用选SQL Server还是Access
用SQL Server Having计算列和平均值
SQL Server 2005基于消息的应用程序介绍
在SQL Server实例之间传输登录和密码
SQL Server 2005深层工具和运行时间集
SQL Server数据库增强版备份体验
使用SQL Server 2000日志转移实现高可用性
浅谈Linq To Sql集成数据库语言的优劣

MSSQL 中的 sql server存储过程、存储函数的加密、解密


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 148 ::
收藏到网摘: n/a

 

存储过程、存储函数的加密:WITH ENCRYPTION
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

CREATE procedure dbo.sp_XML_main

@table_name nvarchar(260)='',

@dirname nvarchar(20)=''

WITH ENCRYPTION

as

begin

....................................................

end

go
 

 

存储过程、存储函数的解密(以下是一位绝世高人编写的代码)

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_decrypt]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[sp_decrypt]

GO

 

/*--破解函数,过程,触发器,视图.仅限于SQLSERVER2000

 

--作者:J9988--*/

/*--调用示例

 

    --解密指定存储过程

    exec sp_decrypt 'AppSP_test'

 

    --对所有的存储过程解密

    declare tb cursor for

    select name from sysobjects where xtype='P' and status>0 and name<>'sp_decrypt'

   

    declare @name sysname

    open tb

    fetch next from tb into @name

    while @@fetch_status=0

    begin

        print '/*-------存储过程 ['+@name+'] -----------*/'

        exec sp_decrypt @name

        fetch next from tb into @name

    end

    close tb

    deallocate tb

--*/

 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP_DECRYPT]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

    drop procedure [dbo].[SP_DECRYPT]

GO

 

CREATE  PROCEDURE sp_decrypt(@objectName varchar(50))

AS

begin

set nocount on

--CSDN:j9988 copyright:2004.04.15

--V3.1

--破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器

--修正上一版视图触发器不能正确解密错误

--发现有错,请E_MAIL:[email protected]

begin tran

declare @objectname1 varchar(100),@orgvarbin varbinary(8000)

declare @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)

DECLARE  @OrigSpText1 nvarchar(4000),  @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)

declare  @i int,@status int,@type varchar(10),@parentid int

declare @colid int,@n int,@q int,@j int,@k int,@encrypted int,@number int

select @type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@ObjectName)

 

create table  #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)

insert #temp SELECT number,colid,ctext,encrypted,status FROM syscomments  WHERE id = object_id(@objectName)

select @number=max(number) from #temp

set @k=0

 

while @k<=@number

begin

if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)

begin

if @type='P'

set @sql1=(case when @number>1 then 'ALTER PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '

                          else 'ALTER PROCEDURE '+ @objectName+' WITH ENCRYPTION AS '

                          end)

 

if @type='TR'

begin

declare @parent_obj varchar(255),@tr_parent_xtype varchar(10)

select @parent_obj=parent_obj from sysobjects where id=object_id(@objectName)

select @tr_parent_xtype=xtype from sysobjects where id=@parent_obj

if @tr_parent_xtype='V'

begin

set @sql1='ALTER TR'