如何在SQL Server 2008中解密存储过程

前端之家收集整理的这篇文章主要介绍了如何在SQL Server 2008中解密存储过程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用WITH ENCRYPTION选项加密的存储过程.现在我要解密那个程序.我已经尝试了一个名为“Decryptsp2K”的存储过程,该过程在此版本的 http://forums.asp.net/t/1516587.aspx/1中为sql 2000提供

但它会删除我的存储过程,而不是解密它.

有没有办法在sql Server 2008中解密存储过程?

解决方法

sql Server Pro文章 “Decrypt SQL Server Objects”仍然可以在sql Server 2008中使用.

您需要通过DAC连接.请参阅the download中的“解密sql 2005存储过程,函数,触发器,views.sql文件.

只是为了总结它为以下存储过程定义执行的步骤

CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'

>从sys.sysobjvalues中的imageval列检索加密对象文本,并将其存储在变量@ContentOfEncryptedObject中
>从DATALENGTH(@ContentOfEncryptedObject)/ 2计算@ObjectDataLength.
>使用 – 字符生成一个填充到正确长度的ALTER PROCEDURE语句(因此在这种情况下为ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS ————)
>执行ALTER语句,从sys.sysobjvalues检索加密版本,并将其存储在变量@ContentOfFakeEncryptedObject中,然后回滚更改.
>使用 – 字符生成一个CREATE PROCEDURE语句,填充到正确的长度(因此在这种情况下为CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS ———–).这被存储在变量@ContentOfFakeObject中

然后,将@i = 1循环到@ObjectDataLength,并使用以下XOR计算一次将定义解密为一个字符.

NCHAR(
      UNICODE(SUBSTRING(@ContentOfEncryptedObject,@i,1)) ^
      (
          UNICODE(SUBSTRING(@ContentOfFakeObject,1)) ^
          UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject,1))
      )
     )

UPDATE

Paul White has written a very nice article that goes into details on why the above works,and that gives an alternate method that doesn’t rely on altering the object: 07002

原文链接:https://www.f2er.com/mssql/82721.html

猜你在找的MsSQL相关文章