我正在使用Java中的RSA加密。我試圖在配備Cyanogenmod的Android 2.2的HTC Saphire(32B)開發人員手機上加密數據,然後在運行Mandriva Linux 2010的64位服務器上解密所述數據。我在兩臺計算機上使用相同的公鑰,私鑰對,可以正確加密/解密Android手機上的數據,可以正確地加密/解密Linux服務器上的數據,但我無法加密手機上的數據,然後在服務器上解密。我得到了不好的填充異常。我已確認數據正在通過電話正確發送,並且正在被服務器正確解析。因此,我無法弄清楚爲什麼解密失敗。誰能幫我這個?也許Java中的RSA算法有一些關於字大小的潛在假設?
更多信息:
- 我的加密/解密庫是基於嚮導創建here.
- 我的加密密鑰長度爲2048位,但我看到不同的密鑰大小類似的行爲。
- 我已將RSA加密/解密代碼打包到jar文件中。它是通過Eclipse在服務器的機器上編譯的。
- 使用Android手機上的加密庫的程序使用上述庫。它也是使用Eclipse構建的。
- 服務器程序是使用Netbeans構建的(因爲當時比較容易)。
其他問題
- 是否還有其他免費的公共密鑰加密算法/可用於Java庫?他們是否跨平臺工作?人們期望他們有什麼樣的表現?等我看過這個,並沒有發現很多;也許我正在尋找與錯誤的關鍵字。
唷!我認爲就是這樣。感謝您的幫助!
任何算法必須跨平臺工作,問題出在你的代碼(或配置)最有可能 – bestsss 2011-02-07 20:25:31
配置,呃?什麼是可配置的RSA?我將如何在Java中執行此操作?你能提供一個指導教程的鏈接嗎?我不想花時間,但是有一位像你這樣的專家(或經驗豐富的人)可以指引我走向正確的方向,這會讓我的生活變得更加輕鬆。 – 2011-02-07 20:33:32
(sry跑掉了晚餐)我的意思是配置爲公鑰/私鑰,不好的填充主要是由交換密鑰錯誤導致的。如果您確定並由於某種原因,android不支持與sun的impl相同的填充。你可以試試http://www.bouncycastle.org/ btw,你如何在同一臺設備/機器上加密/解密數據? – bestsss 2011-02-07 21:26:48