簡體   English   中英

如何在SQL Server 2008中解密存儲過程

[英]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'
  1. 檢索從加密的對象文本imagevalsys.sysobjvalues在一個變量並將其存儲@ContentOfEncryptedObject
  2. DATALENGTH(@ContentOfEncryptedObject)/2計算@ObjectDataLength
  3. 生成一個ALTER PROCEDURE語句,用-字符填充到正確的長度(所以在這種情況下是ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
  4. 執行ALTER語句,從sys.sysobjvalues檢索加密版本,並將其存儲在變量@ContentOfFakeEncryptedObject然后回滾更改。
  5. 使用-字符生成一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM