★加密存储过程:

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'encrypt_this' AND type = 'P')  
DROP PROCEDURE encrypt_this
GO
USE pubs
GO
CREATE PROCEDURE encrypt_this
WITH ENCRYPTION  ---只需要在创建时加入WITH ENCRYPTION即可 AS
SELECT * FROM authors
GO 
--查看存储过程文本:
EXEC sp_helptext encrypt_this
--下面是结果集:
--***The object's comments have been encrypted. 
------对象已经被加密

★解密存储过程:
 
***CREATE  PROCEDURE sp_decrypt(@objectName varchar(50))
AS
begin  
set nocount on
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
----创建存储过程sp_decrypt后,执行以下操作.
----调用时,exec sp_decrypt ‘要解密的存储过程名’
---此时 使用 exec sp_helptext ‘存储过程名’,即可查看存储过程的文本信息 本文参考sqlserver联机丛书以及在网上整理。

sqlServer存储过程的加密和解密方法相关推荐

  1. phpc.sinaapp.com 加密的解密方法

    原文:phpc.sinaapp.com 加密的解密方法 很简单,用类似phpjm的解密方式,替换掉_inc.php中最后一个return中的eval为print就出来了.

  2. 破解SQLSERVER存储过程的加密

    破解SQLSERVER存储过程的加密 http://download.csdn.net/detail/liujiayu2/8620519

  3. php rc4对称加密函数,PHP实现的简单对称加密与解密方法实例小结

    本文实例讲述了PHP实现的简单对称加密与解密方法.分享给大家供大家参考,具体如下: 方法一:YII自带的加密方法 /** * 加密 * @var string [要加密的值] */ $secretKe ...

  4. 常见的js加密/js解密方法

    常见的js加密/js解密方法 当今互联网世界中,数据安全是至关重要的.为了保护用户的隐私和保密信息,开发人员必须采取适当的安全措施.在前端开发中,加密和解密技术是一种常见的数据安全措施,其中 Java ...

  5. php 结合md5的加密,解密方法

    php 结合md5的加密,解密方法 张映 发表于 2012-06-28 分类目录: php 标签:md5, php 最近在整理代码发现了一个不错的东西,结合md5的加解密算法.网上关于php结合md5 ...

  6. 一种客户端即时通信数据的加密和解密方法

    一种客户端即时通信数据的加密和解密方法  摘要 本发明适用于即时通信领域,提供了一种客户端即时通信数据的加密和解密方法,所述方法包括以下步骤:A.客户端加密本地保存的即时通信数据,并将数据加密密钥上传 ...

  7. PDF加密文件解密方法(解除复制打印限制)——转帖

    PDF加密文件解密方法(解除复制打印限制) 小 前言:因为现在网络上下载的PDF文件很多都带有安全性设置,通常的安全设置有:文档打印不允许.更改文档不允许.内容复制或提取不允许等等.在实际运用中,我们 ...

  8. 介绍几种最常见的加密和解密方法

    加密与解密是通信中最常用的数据转换手段,加密的基本过程是应用加密算法与密钥对明文(尚未加密的原文)实施加密,转换成密文发送:解密的基本过程是接收到密文后,应用相应算法与同一密钥对密文解密,转换为明文: ...

  9. android 文件加密解决方法,一种Android平台的文件快速加密以及解密方法与流程

    本发明属于数据安全领域,具体涉及一种Android平台的文件快速加密以及解密方法. 背景技术: 目前移动办公系统极大地提升了企.事业单位的工作效率,而带装有办公应用的智能设备中会存储一些较高机密性的文 ...

最新文章

  1. volatile关键字对
  2. 【Pycharm】专业版连接xshell 远程服务器
  3. 详解MySQL基准测试和sysbench工具
  4. 【最大流】牛棚安排(jzoj 1259)
  5. git 上下载的项目在本地安装依赖时报错 Could not resolve dependency
  6. matlab数组平方的计算自定义函数_从零开始的matlab学习笔记——(38)简单数论计算函数:取整,gcd,lcm,质数,全排列...
  7. html目录参数加密,从HTML文件中取出JS加密需要的参数,并调用js内的加密算法
  8. Python超级码力在线编程大赛初赛题解
  9. 百度,360,搜狗,必应浏览器网站收录提交(SEO优化)
  10. maxima matlab,为什么大家不用Octave等代替Matlab,Maxima代替Maple?
  11. 揭秘朋友圈发现的一个裂变引流套路
  12. 经典车间生产调度问题模型及其算法 目录
  13. 阿里主流开源框架大汇总
  14. 【华为OJ】【067-求最小公倍数】
  15. 基于OSGi的企业级开发框架实践——运行开发框架
  16. 深度剖析未来网络服务模式 《云交换白皮书》一文全讲透
  17. 在职可以考计算机吗,沈阳师范大学在职研可以考计算机证吗
  18. T48568 【zzy】yyy送礼物
  19. 小米 MIX 2S 解BL锁教程 申请BootLoader解锁教程
  20. 【测绘程序设计】——空间直角坐标转换

热门文章

  1. 计算机高级语言VF报告,2017年计算机二级VF试题
  2. USB2.0之硬件关注点
  3. fpp oem rc rtm vol vlk指的都是什么
  4. 全球及中国淡香水行业市场竞争态势及投资分析报告2022-2027年
  5. 场内基金和场外基金,基金溢价,华宝油气场内溢价超40%!
  6. 致癌秘密何以在矿泉水里隐藏10年之久
  7. css中hideFocus
  8. 关于如何将python中多维数组的数字保留两位有效数字
  9. 【C++】多态 - 虚函数/虚析构函数以及虚函数表
  10. winform之propertyGrid控件简单使用方法