2012-07-04 60 views
-6

我正在執行c中的AES算法,從aes encryption program 也是我們用java編寫的AES程序,發生加密數據時發生的問題都不一樣。 輸入文本:358960040119672 鍵:mlabs不同的加密文本是由相同的AES算法生成的嗎?

輸出: 1. java的(機器人): 「vcpBspcYHtjlMgbQJI3aWg ==」 被C 2:「`AC©õ#«0Z」÷> Y」

爲什麼這個特殊字符,在C示

。如何處理此??

+0

這個問題與Android有什麼關係? – Egor

+0

如果我發送由c代碼生成的加密數據到java(android)來解密,那麼由於它的特殊字符,在解密中存在問題。 – user1196792

+0

除了明顯的base64差異之外,這裏還有很多未解答的問題。使用什麼密鑰生成算法? (「mlabs」不能成爲實際的密鑰,因爲它不夠長。密碼/密碼短語通常被散列以產生實際的密鑰。)雙方都使用ECB嗎? –

回答

1

加密後Java輸出已經用Base64算法編碼,而C沒有。

+0

現在我將c的加密輸出轉換爲base64(Base64Encode()),但它們仍然不相同。 – user1196792

+0

現在在c加密的輸出是:YMTnFakWÌSOrMFoi – user1196792

+0

@ user1196792:該輸出甚至不是一個完整的AES塊大小,所以你做錯了什麼。 – caf

0

問題可能蒙山填充和轉化率。將數據轉化爲字節,(例如十六進制),因爲128位加密結果是18個八比特組任何值(甚至不可打印的ASCII字符)。確保雙面使用相同的填充。

AES 128位定義爲CHIPERTEXT [16個八比特組] = AES(KEY [16個八位字節],PLAIN [16個八位字節))),並且沒有約定使用字符串。

相關問題