查看SQL SERVER 加密存储过程,函数,触发器,视图
生活随笔
收集整理的這篇文章主要介紹了
查看SQL SERVER 加密存储过程,函数,触发器,视图
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
create??PROCEDURE?sp_decrypt(@objectname?varchar(50))
AS
begin
set?nocount?on
--CSDN:j9988?copyright:2004.07.15?
--V3.2?
--破解字節(jié)不受限制,適用于SQLSERVER2000存儲過程,函數(shù),視圖,觸發(fā)器
--修正上一版"視圖觸發(fā)器"不能正確解密錯誤
--發(fā)現(xiàn)有錯,請E_MAIL:CSDNj9988@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
AS
begin
set?nocount?on
--CSDN:j9988?copyright:2004.07.15?
--V3.2?
--破解字節(jié)不受限制,適用于SQLSERVER2000存儲過程,函數(shù),視圖,觸發(fā)器
--修正上一版"視圖觸發(fā)器"不能正確解密錯誤
--發(fā)現(xiàn)有錯,請E_MAIL:CSDNj9988@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
轉(zhuǎn)載于:https://www.cnblogs.com/Nina-piaoye/archive/2006/09/18/507494.html
總結(jié)
以上是生活随笔為你收集整理的查看SQL SERVER 加密存储过程,函数,触发器,视图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: utf-8 编码出现空白
- 下一篇: Winxp中加密自己的用户目录