我有一個使用WITH ENCRYPTION選項加密的存儲過程。現在我想解密該過程。我已經嘗試了一個名爲「Decryptsp2K」的存儲過程,該存儲過程在此論壇中爲SQL 2000提供:http://forums.asp.net/t/1516587.aspx/1如何在SQL Server 2008中解密存儲過程
但它會刪除我的存儲過程,而不是將其解密。
有沒有辦法解密SQL Server 2008中的存儲過程?
我有一個使用WITH ENCRYPTION選項加密的存儲過程。現在我想解密該過程。我已經嘗試了一個名爲「Decryptsp2K」的存儲過程,該存儲過程在此論壇中爲SQL 2000提供:http://forums.asp.net/t/1516587.aspx/1如何在SQL Server 2008中解密存儲過程
但它會刪除我的存儲過程,而不是將其解密。
有沒有辦法解密SQL Server 2008中的存儲過程?
的SQL服務器專業文章"Decrypt SQL Server Objects"仍然工作在SQL Server 2008中
您需要通過DAC進行連接。請參閱the download中的文件「Decrypt SQL 2005存儲過程,函數,觸發器,views.sql」。
只是爲了總結的步驟,它執行用於以下存儲過程定義
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
imageval
列sys.sysobjvalues
加密的對象文本並把它存儲在變量@ContentOfEncryptedObject
@ObjectDataLength
從DATALENGTH(@ContentOfEncryptedObject)/2
。ALTER PROCEDURE
語句填充出到正確的長度與-
字符(因此在這種情況下ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
)ALTER
語句,從sys.sysobjvalues
並存儲在變量@ContentOfFakeEncryptedObject
然後回滾變化檢索加密版本。-
字符(因此在本例中爲CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
)生成填充爲正確長度的CREATE PROCEDURE
語句。這被存儲在變量@ContentOfFakeObject
然後它通過循環爲@i = 1 to @ObjectDataLength
和解密定義一個字符在使用以下XOR
計算的時間。
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1))^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1))^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)
UPDATE
保羅·懷特寫了一個非常漂亮的文章說進入細節上 爲什麼上面的作品,並給出了不替代方法 依靠改變對象:The Internals of
WITH ENCRYPTION
許多舊的工具停止使用SQL Server 2005+。請注意,您必須使用Dedicated Admin Connection
快速搜索會顯示幾個選項。
我認爲這是所有付費版本,不是免費的。我從http://www.elitude.net/鏈接檢查瞭解密器。 –
@Upendra Chaudhari:可能只會爲那裏的應用付費。這一切都改變了SQL Server 2005 – gbn
感謝您的支持。 –
解密存儲SQL SERVER的過程
您可以使用第三方工具來解密您的加密存儲過程。
下載工具 - :這是免費的
https://www.devart.com/dbforge/sql/sqldecryptor/download.html
如果要解密程序或任何其他的加密的物體,請ApexSQL Decrypt。
它是一個免費的獨立工具,可以將它集成到SSMS中,預覽原始DDL腳本,並創建更改或創建解密腳本。
從獨立工具中,您可以連接到多個服務器並一次解密多個對象。
dbForge SQL Decryptor是另一種工具,可以幫助你在這種情況下。
可以請您指導我運行哪個腳本來解密我的SP。它來自「解密SQL 2005存儲過程,函數,觸發器,views.sql」嗎? –
謝謝,我使用DAC運行該腳本,它對我來說工作得很好。 –
不錯。我沒有看得太深。 – gbn