[英]How to decrypt stored procedure in SQL Server 2008
我有一個使用WITH ENCRYPTION選項加密的存儲過程。 現在我要解密該程序。 我已經嘗試過一個名為“Decryptsp2K”的存儲過程,該過程在本論壇中為SQL 2000提供: http : //forums.asp.net/t/1516587.aspx/1
但它刪除了我的存儲過程,而不是解密它。
有沒有辦法解密SQL Server 2008中的存儲過程?
SQL Server Pro文章“解密SQL Server對象”仍然可以在SQL Server 2008中使用。
您需要通過DAC連接。 看到這個文件“解密SQL 2005的存儲過程,函數,觸發器,views.sql” 下載 。
只是總結一下它為以下存儲過程定義執行的步驟
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
imageval
列sys.sysobjvalues
在一個變量並將其存儲@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 to @ObjectDataLength
並使用以下XOR
計算一次解密一個字符的定義。
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)
UPDATE
保羅懷特撰寫了一篇非常好的文章,詳細介紹了上述工作的原因,並提供了一種不依賴於改變對象的替代方法:
WITH ENCRYPTION
的內部結構
如果要解密過程或任何其他加密對象,請查看ApexSQL Decrypt 。
它是一個免費的獨立工具,可以選擇將其集成到SSMS中,預覽原始DDL腳本,以及創建Alter或Create解密腳本。
從獨立工具,您可以連接到多個服務器並一次解密多個對象。
dbForge SQL Decryptor是另一個可以在這種情況下幫助你的工具。
許多舊工具停止使用SQL Server 2005+。 請注意,您必須使用Dedicated Admin Connection
快速搜索顯示了幾個選項。
解密SQL SERVER的存儲過程
您可以使用第三方工具來解密加密的存儲過程。
下載該工具 - :它是免費軟件
https://www.devart.com/dbforge/sql/sqldecryptor/download.html
dbForge Sql Decryptor幫助我解密加密的存儲過程。 詳情請點擊此處
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.