2014-04-10 92 views
1

我正在研究具有原生Android和本機iOS實現的即時通訊應用程序。必需的功能之一是可以通過輸入普通密碼字符串來加密消息。這些消息必須通過輸入該密碼進行解密。我被告知要「使用AES」。針對Android和iOS的基於密碼的加密

我已經嘗試過接近成功的計劃是取得密碼字符串,將它與一些我知道永遠不會改變的上下文信息綁定在一起,並使用類似MD5的東西生成一個固定長度的密鑰。我知道這不是超級安全的。

爲了解密,我再重複一遍,我得到了相同的密鑰。然後,我用該密鑰解密數據,並獲取原始數據。

我這對Android和iOS工作,但他們無法解密彼此的數據,還告訴我有可能實現的不同,我不能看到,而我不能改變。兩個平臺上的AES128加密數據的前16個字節總是相同,但在此之後,它們完全不同。我可以檢查什麼?

要超清晰,用戶體驗將與使用密碼共享zip文件的體驗相同。用戶隨時可以從任何設備和BAM輸入密碼,他們會得到未加密的數據。共享密鑰文件或任何這些東西不是這個的一部分。

回答

1
  1. 沒有必要使用任何鹽(至少我看不出有任何理由爲)
  2. AES是一個標準 - 不管是實施,結果將是相同的。
  3. 這對前128位和不同其餘數據的相同的輸出意味着,使用的是不同的密碼模式AES是塊密碼和你可能使用它與這兩個平臺上128B塊大小,所以第一塊是加密的同樣的方式和接下來的是用不同的密鑰加密的。請閱讀更多關於block cipher modes
+0

我沒有在Android上傳IV,而且它沒有它。一旦我給它與iOS上相同的IV(全部爲0x0),它就創建了相同的結果。 –