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

sqlserver存储过程加密和解密 存储过程,数据库 阅读详情
Copyright@ ♂猜猜♂. 2005. All rights reserved

存储过程、存储函数的加密:WITH ENCRYPTION

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

--优快云:j9988 copyright:2004.04.15

--V3.1

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

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

--发现有错,请E_MAIL:优快云j9988@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

 

SqlServer存储过程和函数的加密与解密 通过加密存储过程和函数,我们可以增加数据库应用程序的安全性,确保只有授权用户能够访问和修改这些对象的源代码。在 SQL Server 中,我们可以使用内置的加密功能来实现这一目标。通过加密和解密过程,我们可以保护敏感的业务逻辑和算法,同时允许授权用户辑和算法,同时允许授权用户进行必要的更改和优化。请注意,加密存储过程和函数并不是绝对的安全措施。有些高级用户可能仍然能够通过其他手段来获取加密对象的源代码。因此,在设计数据库应用程序时,还应该考虑其他安全层面,例如合适的用户权限管理、网络安全和数据加密等。 阅读详情

相关推荐

SQL Server储过程加密和解密原理深入分析

在网络上,看到有SQL Server 2000和SQL Server 2005 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的;感觉这两个存储过程蛮有意思的,拿来与大家分享,需要了解的朋友可以参考下

SQLserver存储过程加密、解密

SQLserver存储过程加密、解密 作者:邱名涛 撰写时间:2019 年 6 月 22 日 关键技术: 数据库存储过程加密、解密 –加密存储过程 –判断表是否存在,如果存在就删除 if object_id(N'dbo.Test',N'U') is not null drop table dbo.pwdTable go –创建表 –Varbinary是一个可以改变长度的二进制数据。 –defau...

Q_MingTao 5318

Axure RP 10表单数据提交制作

本文介绍了如何使用Axure RP 10实现表单数据提交。

Peppaaa的博客 990

SQL Server解密存储过程

  SQL Server加密存储过程用到“WITH ENCRYPTION”参数的时候,就可以将它加密,这种加密方式是不可逆的,再也不能打开了,呜呜~那么我们改怎么样才能看到原来的代码而不破坏这个存储过程呢?icech在网上找到了两个十分十分大牛的人!一个是j9988,早在2004年就写了一个可以破解加密的存储过程,支持SQL Server 2000非常的好;另一个是王成辉翻译老外写的一个,竟然可以

logicbiz的专栏 1704

windows11 远程桌面连接 通过代理连接RDP桌面报错 错误代码0x904 拓展错误代码0x7

打开windows Defender防火墙设置--允许应用通过防火墙更改设置--允许其他应用浏览--进入C:\WINDOWS\system32目录选择mstsc.exe进入C:\Windows\SysWOW64目录h'qmstsc.exe添加后列表里多了一个远程桌面连接,还有一个Remote Desktop Connection,配置网络权限后保存连接成功。

weixin_43978891的博客 1万+

嵌入式下载故障排查:ST-LINK与GD32 Programmer典型问题解决

嵌入式固件烧录是MCU开发的关键环节,其本质依赖于调试器(如ST-LINK、GD-Link)与目标芯片间的协议通信、驱动加载及硬件接口协同。原理上,SWD/JTAG协议需在正确时序、电平与供电条件下完成设备枚举、ID读取与Flash编程;技术价值在于保障量产烧录稳定性与调试可重复性;典型应用场景涵盖STM32/GD32教学开发、工业控制板量产调试及Windows 11新系统适配。本文聚焦ST-LINK-V2在Keil MDK中的下载失败和GD32 All In One Programmer的DLL加载异常两

weixin_35006125的博客 153

sql2005存储过程解密

问题一: DAC连接问题 自己尝试了n次,最后总结一下连接步骤: 1 先用有sysadmin角色的用户登陆SQL Server Management Studio; 2 在工具栏上选数据库引擎查询;服务器名称改为 ADMIN:服务器名称 ;选项>连接属性>连接到数据库 改为加密存储过程所在的数据库;连接 3 运行解密的存储过程; 问题二: 可用的存储过程解密代码 ...

weixin_30764883的博客 256

HFSS线圈仿真避坑指南:从建模到寄生参数分析的完整流程

本文详细介绍了HFSS线圈仿真的完整流程,从精准建模到寄生参数优化,特别针对Ansys Electronics Desktop用户提供实用指南。涵盖线圈几何构建、材料属性配置、端口激励设置及寄生电阻与电感分析等关键步骤,帮助工程师避免常见错误,提升仿真精度与效率。

weixin_29209801的博客 548

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

存储过程、存储函数的加密:WITH ENCRYPTIONCREATE procedure dbo.sp_XML_main @table_name nvarchar(260)=,@dirname nvarchar(20)=WITH ENCRYPTIONas begin....................................................endgo存储过程、存

发现之旅 955

基于Android13的系统启动流程分析(三)之FirstStageMain阶段

init进程是Android系统中用户空间的第一个进程,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建zygote(孵化器)和属性服务等。init进程是由多个源文件共同组成的,这些文件位于源码目录system/core/init1. Bootloader 引导当按下设备电源键时,最先运行的就是 bootloader(固化在ROM的程序),bootloader 的主要作用就是硬件设备(如 CPU、flash、内存)的初始化并加载到RAM,通过建立内存空间映射,为装载 Linux 内核做好准备,。

q1210249579的博客 5496

手把手教你用Python分析OpenFAST仿真结果:pyDatView处理.out文件与数据可视化技巧

本文详细介绍了如何使用Python中的pyDatView工具分析OpenFAST仿真结果,包括数据加载、质量检查、时域与频域分析、多工况对比及自动化报告生成。通过优化技巧和可视化方法,帮助工程师高效处理.out文件,提升风机性能分析的准确性和效率。

weixin_29311017的博客 183

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

 存储过程、存储函数的加密:WITH ENCRYPTIONCREATE procedure dbo.sp_XML_main @table_name nvarchar(260)=,@dirname nvarchar(20)=WITH ENCRYPTIONas begin..........................................

xwchen的专栏 771

SAR型ADC的电荷重分配技术解析

本文深入解析了SAR型ADC的核心技术——电荷重分配。通过类比“猜数字”游戏,阐述了其逐次逼近的工作原理,并重点剖析了电容阵列如何实现高速、低功耗的模数转换。文章还探讨了该技术在速度、能效及集成度方面的优势,并指出了电容匹配精度等实际挑战,为嵌入式与物联网设备中的ADC选型与应用提供了实用指南。

nnn11的博客 906

解密SQLServer2000加密存储过程,函数,触发器,视图

查看SQL SERVER 加密存储过程,函数,触发器,视图 选择自 j9988 的 Blog 关键字 字节不受限制,比SQLexplorer安全,查看所有SYSCOMMENTS内加密的代码 创建好sp_decrypt之后,运行SQLServer2000查询分析器 use db_name exec sp_decrypt 'encrypt_view' ...

dbjtimve93993的博客 203

基于STM32F4XX 、HAL库的GXHT30C温湿度传感器驱动应用C语言程序设计

define GXHT30C_STATUS_WRITE_CHK (1 << 0) // 写数据校验状态。#define GXHT30C_STATUS_HUMI_TRACK (1 << 11) // 湿度跟踪报警。#define GXHT30C_STATUS_TEMP_TRACK (1 << 10) // 温度跟踪报警。#define GXHT30C_STATUS_CMD_STATUS (1 << 1) // 命令执行状态。

PP_Cottage的博客 226

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

解密SQL Server2005比SQL2000要麻烦一些,但也可以, 在SQL SERVER 2005中必须用专用管理连接才可以查看过程过程中用到的表,专用管理连接需要在sqlcmd命令后带参数 -A, 要不然就会出错,提示 无效的对象名:'sys.sysobjvalues' Msg 208, Level 16, State 1, Server MICROSOF-A91382\W...

dbjtimve93993的博客 166

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

用 C++开发了一个Sql Server加密解密的存储过程,同时在此基础上写了两个加密解密的函数...

用 C++开发了一个Sql Server加密解密的存储过程,同时在此基础上写了两个加密解密的函数: 调用方式如下: select dbo.DecStr('!&lt;8HC=1?&lt;&gt;5FA5'); select dbo.EncStr('18667102122'); 代码、配置说明下载地址:http://www.everbox.com/f/g38TGE2EmPbruYEZT8ABV...

云计算? 154

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

解密SQL SERVER 2005加密存储过程,函数

http://boyi55.blog.51cto.com/4345/75922/ create PROCEDURE [dbo].[sp_decrypt] (@procedure sysname = NULL) AS SET NOCOUNT ON BEGIN DECLARE @intProcSpace bigint, @t bigint, @maxColID smallin

brook0344的专栏 814

Sql server 2000 存储过程、存储函数的加密解密

第一步:在查询分析器中执行如下语句,生成一个解密过程:-------------------------------------------------------------create PROCEDURE sp_decrypt(@objectName varchar(50))ASbeginset nocount onbegin trandeclare @objectname1 varchar(...

weixin_30408739的博客 117
上一篇: 创建、删除临时表
下一篇: eXist 原生数据库(Native XML Database)安装与配置
thefirstwind
博客等级 码龄25年 213粉丝 55原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值