2010-05-09 12 views
1

我試圖使用加密++加密的HTTP請求,並與應用程序引擎服務器端pycrypto解密。使用Arc4加密,我可以在iPhone端成功加密和解密,但是當我嘗試在應用引擎上解密時,結果是亂碼。在客戶端加密後的密文是一樣的,當我檢查記錄在服務器上接收到的文本,因此,如果他們在視覺上是相同的,爲什麼會解密失敗?使用加密++與pycrypto iPhone SDK的App Engine上

我想也許它與NSString的編碼有關,因爲我發現我需要在解密之前在服務器端的密碼上調用encode(),以避免解密()在嘗試編碼時解密失敗ascii中的密碼。我有一個單獨的帖子,對此進行了深入研究。任何人都可以提供建議嗎?

crypto++/pycrypto with google app engine

更新: 我已經發現,在加密ç加密產生密文++是不一樣的,從在Python與PyCrypto加密的密文。有沒有什麼我做錯了初始化密鑰?我做這樣的事情:

ARC4::Encryption enc("a"); 
在C.

而且在python我做的:

testobj=ARC4.new('a') 

的%編碼得到的密在C比蟒蛇不同。我注意到,在C,I可以通過一個第二參數爲keylength,我猜測應該是1的「a」,從而導致不同的密碼將沒有參數的情況相比。雖然%編碼的結果仍然不同於python編碼。

做任何事情看我的init特別不對勁吧?

+0

[crypto ++/pycrypto with google app engine]可能重複(http://stackoverflow.com/questions/2794942/crypto-pycrypto-with-google-app-engine) – 2010-05-10 01:19:54

+0

嗨,是的,它是更多的附錄。我被建議創建一個與iphone SDK開發相關的帖子,因爲我的問題可能與此有關。原帖中的問題已解決,因此我在此提及。 – Joey 2010-05-10 02:21:37

+0

@Alex:您的鏈接不重複。這是用不同的語言完成的,他希望Objective-C不是Java或任何代碼。 – 2010-05-10 07:34:33

回答

0

我發現這個問題是不與任何加密IMPL而是錯誤地試圖東西加密的密文成一個NSString這不能簡單地採取原始的二進制數據,沒有特定的編碼的初始化。訣竅是編碼以base64或base16使得它是可讀的數據,然後解密之前在服務器端使用unhexlify。