2012-03-14 75 views
-1

我想寫一個RSA程序來了解更多關於密碼的知識。我正在使用Java,但我正在尋找一般性建議。更好的編程實踐

我的問題是,採取文件內容的最佳方式是什麼,並將其轉換爲雙倍塊以提升權力?

所以說我有一個ASCII文本文件,其中包含哈姆雷特的全文(或K & RC,或其他) 我將它轉換爲字節塊,並提高整個塊的權力。如果我提高每個字節的功率,它就容易受到頻率分析的影響。

現在我將文件讀取到一個字節數組中,轉換爲一個double數組,將其轉換爲大小爲[64] [file/64]的2d double數組,並且對於2d數組中的每個double []連接所有的雙打到一個字符串,將該字符串轉換爲雙精度(或者它應該是一個整數?),然後做我的數學。

這非常複雜。

我可以做到這一點沒有2D數組,但這似乎是一個更簡單的方法來處理塊,因爲你不能在java中切片數組。 你不需要給我代碼,但我正在尋找更好的架構。

回答

0

我會非常建議你看看其他的實現,並在進一步學習之前瞭解一下RSA,因爲你現在很迷茫。你不應該使用雙打,你不能把整個文本看作一個單一的數字。較大的文本始終首先使用對稱密鑰加密,然後使用RSA密鑰對該密鑰進行加密。單個RSA加密只能適合比模數小的數字 - 實際上由於填充而更少。

BigInteger將是一個不錯的選擇是的,它有一個很好的原因計算素數的方法。它使用數組作爲後備實現(當然,Oracle JDK的確如此,但我認爲其他Java實現也會使用long)。

+0

我不能把整個文本作爲一個數,但如果我只是加密每個字節,這是很容易寫一個程序來尋找模式 – Muricula 2012-03-15 04:30:23

+0

我不能把整個文本作爲一個數字,但如果我只是對每個字節進行加密,這將會降至頻率分析。我需要提高整體力量。另外,如果我要用AES等對稱算法加密某些東西,那麼RSA的重點是什麼?我明白你對加密密鑰的看法,但爲什麼不使用duffie hellman密鑰交換? 我使用雙打,因爲它們是最大的原始數據類型。他們比長時間長。我想我很快就會爲bigIntegers重做它,我開始很簡單。你有關於其他實現的建議嗎? – Muricula 2012-03-15 04:40:58

+0

關於編輯註釋的默認時間戳 – Muricula 2012-03-15 04:41:20