2013-07-22 33 views
1

我非常n00b在此。我甚至不確定我所問的是否正確。從簽名哈希回來與RSA SignHash

我已經被要求解密一些軟件包,但是我發現軟件包沒有被加密,而是軟件包(byte [])有一個內部使用密碼保護的.zip文件。

所以現在我必須檢索該密碼。我跟蹤它的代碼,並來到了這一點:

lSupraHeader = lCryptoTransformRSA.SignHash(lSupraHeader, CryptoConfig.MapNameToOID("SHA512")); 

lSupraHeader是一個字節[]包含(其它事物之間)的密碼。如果我從lSupraHeader獲得字符串,我可以讀取密碼,問題是在那之後的「SignHash」我無法再得到它了,呃,我不知道該怎麼做。

該代碼是前一段時間製作的,更改它對我來說不是一種選擇。

有沒有辦法從那裏取回密碼?是我正在問什麼,我提供什麼,或者我需要別的東西嗎?

回答

2

有沒有辦法從那裏檢索該密碼?

不可以。一旦數據被散列,它不能被取消。

SHA也被稱爲「單向散列算法」。它被設計成可以將任何數量的數據放入其中,並且有限數量的數據出來。這樣的東西對於檢查兩部分數據是否相等很有用,雖然這種方法也有缺陷(對此有各種解決方法)。

另一方面,加密則接收數據,使用一個密鑰,並且將大量與原始數據大小基本相等的隨機數據吐出。使用相同的密鑰,隨機數據可以不加密或解密,以產生原始數據。

說了:

我跟蹤它的代碼,並來到了這一點:

你是怎麼發現的?它似乎可以訪問源代碼和調試器。如果這是真的,那麼看看你是否可以在調試器中找到「即時窗口」。您可能能夠設置斷點,執行Console.WriteLine(whatever),並以此方式手動檢索密碼。這樣做會使原始代碼不受影響。

+0

我可以,我正在處理這段代碼。我有權訪問此源代碼。問題是我需要使用該方法返回的內容打開該.zip文件(該內部包含密碼保護的.zip)。 我調試了代碼來理解加密過程,但發現了這種情況。 –

+1

@NickLScott:我很困惑你的意思是「包裝」。你是否暗示你有一個任意的字節數組來代表一個文件夾或者包含一個zip的東西?或者,字節數組是否是zip?還是其他什麼東西? –

+0

我有一個任意的字節數組,代表.zip文件加上一些其他的東西作爲頭和一些更多的數據。 我希望這可以清除它。我的道歉不夠清楚。 –