2010-11-02 27 views
0

我一直在嘗試在iPhone應用程序和PHP Web服務之間實現一些加密。但它不工作。似乎前半部分文本不被解密,而後半部分解密得很好。我該怎麼辦?iPhone/PHP加密/解密中丟失的東西

PHP的加密方法如下:

function decrypt($str, $iv) { 
    $iv .= "00000000"; 
    $str = base64_decode($str); 
    return self::decrypt_data($str, $iv, self::secret_key); 
} 

是加密文本的iPhone東西使用CryptoHelper類是這樣的:

NSString *encrypted = [[CryptoHelper sharedInstance] encryptString:dataString]; 

的CryptoHelper類可以在http://pastie.org/1267796可見。

回答

1

嘗試一個簡單的例子,您可以從iPhone應用程序向PHP發送已知的Base64編碼字符串。

將已知的有效字符串與PHP得到的內容進行比較。我最近知道,當試圖從腳本到PHP執行Ajax帖子時,我們遇到了一些字符(特別是+)被PHP轉換爲空格的問題,因爲它正在自動執行URL解碼。我們必須將所有+切換到它們的%(URL編碼的%2B)等價物。這爲我們解決了這個問題。

+0

@Mads Godvin Jensen,接下來我會提出的建議是確定問題是在加密後進行編碼還是編碼後的傳輸。使用PHP來''base64_encode'你的字符串,並嘗試發送一個簡單的字符串,解碼它,看看是否有任何錯誤(url_encode,以確保這也不是問題)。如果這樣做沒有問題,那麼使用CryptoHelper加密相同的字符串並將結果顯示在屏幕上,然後在視覺上比較每個字符以查看是否有不一樣的東西。問題應該很容易發現。 – 2010-11-03 16:48:07