`
bolutes
  • 浏览: 868373 次
文章分类
社区版块
存档分类
最新评论

sqlserver 存储过程、存储函数的加密、解密

 
阅读更多

sqlserver 存储过程、存储函数的加密、解密

储过程、存函数的加密: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

--CSDNj9988 copyright:2004.04.15

--V3.1

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

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

--发现有错,请E_MAILCSDNj9988@tom.com

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 TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTERD OF INSERT AS PRINT 1 '

end

else

begin

set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '

end

end

if @type='FN' or @type='TF' or @type='IF'

set @sql1=(case @type when 'TF' then

'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '

when 'FN' then

'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'

when 'IF' then

'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'

end)

if @type='V'

set @sql1='ALTER VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'

set @q=len(@sql1)

set @sql1=@sql1+REPLICATE('-',4000-@q)

select @sql2=REPLICATE('-',8000)

set @sql3='exec(@sql1'

select @colid=max(colid) from #temp where number=@k

set @n=1

while @n<=CEILING(1.0*(@colid-1)/2) and len(@sQL3)<=3996

begin

set @sql3=@sql3+'+@'

set @n=@n+1

end

set @sql3=@sql3+')'

exec sp_executesql @sql3,N'@sql1 nvarchar(4000),@ varchar(8000)',@sql1=@sql1,@=@sql2

end

set @k=@k+1

end

set @k=0

while @k<=@number

begin

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

begin

select @colid=max(colid) from #temp where number=@k

set @n=1

while @n<=@colid

begin

select @OrigSpText1=ctext,@encrypted=encrypted,@status=status FROM #temp WHERE colid=@n and number=@k

SET @OrigSpText3=(SELECT ctext FROM syscomments WHERE id=object_id(@objectName) and colid=@n and number=@k)

if @n=1

begin

if @type='P'

SET @OrigSpText2=(case when @number>1 then 'CREATE PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '

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

end)

if @type='FN' or @type='TF' or @type='IF'

SET @OrigSpText2=(case @type when 'TF' then

'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '

when 'FN' then

'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'

when 'IF' then

'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'

end)

if @type='TR'

begin

if @tr_parent_xtype='V'

begin

set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTEAD OF INSERT AS PRINT 1 '

end

else

begin

set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '

end

end

if @type='V'

set @OrigSpText2='CREATE VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'

set @q=4000-len(@OrigSpText2)

set @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)

end

else

begin

SET @OrigSpText2=REPLICATE('-', 4000)

end

SET @i=1

SET @resultsp = replicate(N'A', (datalength(@OrigSpText1) / 2))

WHILE @i<=datalength(@OrigSpText1)/2

BEGIN

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

set @orgvarbin=cast(@OrigSpText1 as varbinary(8000))

set @resultsp=(case when @encrypted=1

then @resultsp

else convert(nvarchar(4000),case when @status&2=2 then uncompress(@orgvarbin) else @orgvarbin end)

end)

print @resultsp

set @n=@n+1

end

end

set @k=@k+1

end

drop table #temp

rollback tran

end

分享到:
评论

相关推荐

    最方便的sql server存储过程、函数解密工具

    笔者找到的功能最强大、操作最简单、使用最可靠的数据库解密工具,用于解密的SQL Server2000、2005等版本的存储过程、函数、触发器和视图。 执行连接到数据库后,左边直接列出数据库清单以及每个数据库内的存储过程...

    解密SQL SERVER 2005加密存储过程,视图、函数.sql

    解密SQL SERVER 2005加密存储过程,视图、函数.sql

    解密SQL存储过程,适用于SQLSERVER2000存储过程

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

    2024SQLServer解密存储过程、函数、视图、触发器工具

    2024SQLServer解密存储过程、函数、视图、触发器,mssql解密,WITH ENCRYPTION解密,亲测可用,支持2000、2005、2008、2012、2019...

    破解Sql Server存储过程加密

    此存储过程可以破解sql 2000、2005、2008加密的函数、存储过程、视图、触发器,本人平时工作中经常使用,非常方便!

    MSSQL存储过程解密工具SQL SERVER

    SQL SERVER存储过程解密工具,sqldecryptor可以将被加密的存储过程和函数等直接解密

    破解SQL2005加密的存储过程

    破解加密过的存储过程 前提是要知道 加密的存储过程是用哪个版本的SQL 本人以SQL2005的版本为例

    sqlserver_decryptor 解密工具

    笔者找到的功能最强大、操作最简单、使用最可靠的数据库解密工具,用于解密的SQL Server2000、2005等版本的存储过程、函数、触发器和视图。 执行连接到数据库后,左边直接列出数据库清单以及每个数据库内的存储过程...

    数据库函数、存储过程破解工具.zip

    笔者找到的功能最强大、操作最简单、使用最可靠的数据库解密工具,用于解密的SQL Server2000、2005等版本的存储过程、函数、触发器和视图。 执行连接到数据库后,左边直接列出数据库清单以及每个数据库内的存储过程...

    存储过程解密

    用delphi编写,能查看SQL SERVER中加密的存储过程或函数。

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    5.4.5 加密和解密Web.Config文件的配置节 5.4.6 ASP.NET网站管理工具 5.4.7 ASP.NET MMC管理单元 5.5 本章小结 第6章 数据源控件 6.1 SqlDataSource数据源控件 6.2 AccessDataSource数据源控件 6.3 ...

    加解密DLL文件

    实现加密解密功能,独立的DLL文件,可注册为SQLServer扩展存储过程,在SQL脚本中调用加解密功能;也可注册为COM库;还可在开发语言中以声明外部函数方式直接调用DLL文件中的加解密功能。提供了Delphi的调用接口单元...

    数据库开发助手 -- 轻松开发调试数据库

    MS SQLSERVER数据库开发提供:一、查看指定数据库对象 二、加密的存储过程、函数、触发器及视图都可以解密 三、自助提供表的查询、增、删、改的SQL语句 四、针对现有表记录生成初始数据脚本 五、针对表生成管理此表...

    T-SQL问题解决集锦 数据加解密全集

    以下代码已经在SQLServer2008上的示例数据库测试通过问题一:如何为数据进行加密与解密,避免使用者窃取机密数据? 对于一些敏感数据,如密码、卡号,一般不能使用正常数值来存储。否则会有安全隐患。以往的加密解密...

    数据库开发助手DBDevTools

    MS SQLSERVER数据库开发提供:一、查看指定数据库对象 二、加密的存储过程、函数、触发器及视图都可以解密 三、自助提供表的查询、增、删、改的SQL语句 四、针对现有表记录生成初始数据脚本 五、针对表生成管理此表...

    T-SQL问题解决集锦??数据加解密

    以下代码已经在SQLServer2008上的示例数据库测试通过  问题一:如何为数据进行加密与解密,避免使用者窃取机密数据?  对于一些敏感数据,如密码、卡号,一般不能使用正常数值来存储。否则会有安全隐患。以往...

    C#程序开发范例宝典(第2版).part13

    实例225 使用ROT13加密解密文件 314 6.7 其他 315 实例226 获取窗口文本 315 实例227 判断文件是否正在被使用 316 实例228 在程序中调用.HLP文件 317 实例229 C#中实现文件拖放 317 实例230 文件比较 318 ...

Global site tag (gtag.js) - Google Analytics