2010-11-02 60 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