2013-09-26 35 views
1

我想寫一個服務到SFTP到給定的時間間隔的服務器,下載目錄中的所有文件,然後解密它們進行處理。對於RSA密碼輸入太大BouncyCastle

解密方法在一個點上工作,我沒有修改它,因爲。我仍然使用與成功工作時相同的密鑰。

我現在用的是PGPEncrypt,PGPDecrypt,發現PGPEncryptionKeys類BouncyCastle的位置:https://github.com/sledwith/PGP-Decryption-With-C-Sharp

此外,我已經修改了代碼如下所示:Exception on decrypting file using BouncyCastle PGP

如果你注意到了,我評論怎麼說修復了我的代碼並解密了。

現在不是。

有沒有人有一些見解,爲什麼這可能發生,或者我怎麼能解決它?

+1

如果您可以將相關部分的代碼發佈到此問題中,這將有所幫助。 –

+0

你有這個工作嗎? – Matthew

+0

沒有抱歉,沒有輸入。所以,我發現它在我的本地測試工作後,我刪除了我的帖子中的最後一個鏈接的修改,但仍然在等待一組新的測試數據,試圖看看那裏發生了什麼,因爲它在我嘗試時在我的第一組測試數據上。 – Corwin01

回答

2

我打算猜測您使用的是1024位RSA公鑰/私鑰,並嘗試使用它加密128字節的東西?如果我是對的,請使用更大的RSA密鑰(RSA 4096將允許您加密大約500字節)。

我注意到你說這是零星的鏈接文章。一些谷歌搜索表明,如果你在待加密字節中有前導零,它可能能夠處理完整的128字節。另外 - 如果你只是用密鑰對加密「data」,你需要確定它不會超出這些限制(RSA 2048約爲240左右字節,而填充RSA 4096約爲500左右)。良好的做法和未來的打樣方法是對所有數據實施對稱密鑰加密,並使用RSA密鑰對您的密鑰進行加密/解密。

+0

我不明白你關於密鑰大小的陳述。 1024位RSA公鑰可以對長達1024位的數據進行加密。現在,通常使用填充,但是仍然可以預期好的900多位數據被加密。 –

+0

@DuncanJones錯誤類型感謝更正 - 應該是字節。 – Matthew

+0

我努力想象128 * byte *對稱密鑰。 AES密鑰不大於256 *位​​。三重DES密鑰是192位... –

0

如果你在使用PGP過程明確沒有死設置,您可以在這裏用我的圖書館:

https://github.com/zenith-nz/ObscurCore

其「大旗功能」還沒有完全激活(創建加密的檔案一種),但是它完成了你想要的任何事情,看起來 - 它使用ECDHC方案UM1進行密鑰推導,並實現了各種塊和流密碼。它建立在BouncyCastle之上。

0

我想我解決了這個問題;請試試這個代碼。

public string StringToDecrypt(string text) 
{ 
    byte[] toDecrypt = Convert.FromBase64String(text); 
    AsymmetricCipherKeyPair keyPair; 

    using (var reader = File.OpenText(@"Private Key File Path")) 
    { 
     keyPair = (AsymmetricCipherKeyPair) new PemReader(reader).ReadObject(); 
    } 

    var engine = new RsaEngine(); 
    engine.Init(false, keyPair.Private); 

    return Encoding.UTF8.GetString(engine.ProcessBlock(toDecrypt, 0, toDecrypt.Length)); 
} 
+2

嗨Obaid,歡迎來到這個網站。您可能希望爲您的答案提供更多的上下文,並考慮其格式。請閱讀[如何回答](http://stackoverflow.com/help/how-to-answer)並考慮在發佈之前檢查您的答案,以檢查格式是否正確。謝謝。 – RichieAHB

0

其「大旗功能」還沒有完全活動(創建一種加密的檔案),但它確實是你想要的一切,似乎它 - 它的密鑰推導與ECDHC方案,UM1,並實現各種塊和流密碼。它建立在BouncyCastle之上。

+0

你有這方面的來源嗎? – Stefan

相關問題