2013-11-26 41 views
1

我已經在我的PC上成功構建並編譯了一個應用程序,該應用程序將生成一個RSA密鑰對(我在長算術中使用了GPK)。然後我測試了字符串「Hello World」上的加密/解密(首先是ASCII - >十六進制變換)。RSA對部分密文的加密和解密?

我的問題是在數學上可能只從我的密文字符串「Hello World」解密「Hello」,或者我必須先加密「Hello」,然後加密「World」,然後再加密解密他們分開?

編輯:我的期望的使用情況:

我有一個芯片(SoC的ZYNQ Xilinx公司),其中只有的芯片上存儲器256K,以及L2高速緩存的512K。

我可以用一些基本的指令/數據預先填充和鎖定緩存,然後將256K用於代碼(變量)的堆棧,堆和.data/.bss段。

我需要更多的空間,所以我想我可以使用256K作爲「交換」空間,並從外部加密的閃存中獲取其餘的.text(指令代碼),但我需要解密它片上維持安全。

我想知道如果我可以加密整個圖像,然後「取,解密,解碼,執行」。它看起來像我可能被限制在256K塊加密我的圖像,並解密它在大塊的大小以及。

+0

你可以發佈你的代碼嗎? – CodesInChaos

+0

請勿爲此使用RSA。使用像AES這樣的分組密碼 - 它們支持您想要的分塊操作,以及更小的塊大小(例如,每次128或256位)。我相信Zynq SOC甚至可能在硬件上擁有AES。 – duskwuff

回答

2

RSA是一種數學運算。你不能只恢復部分純文本;做數學(c d mod n)將產生整個純文本。正如你所建議的,如果你想分別解密兩個部分,你必須執行兩個單獨的RSA加密操作。

這聽起來有點像X-Y問題。你真的想完成什麼?


更新: RSA最好用作密鑰加密算法:不是直接對數據進行加密,你加密的對稱算法和RSA的密鑰,然後用對稱加密算法的應用程序數據。這是RSA在TLS,S/MIME,PGP和其他廣泛接受的協議中使用的方式。

因此,使用AES等算法(使用合適的模式,最好是提供完整性保護的算法)與RSA一起構成安全高效的系統。

+0

上面加了編輯。我試圖將一個安全的應用程序存儲在外部非易失性存儲器中,但我的芯片只有一個可用的子集大小。 – IDLacrosseplayer

+0

@IDLacrosseplayer好吧,我想我理解你的應用程序,但你需要改變你的方法。 – erickson