在iphone中加密nsdata并在php中解密

时间:2010-02-20 07:37:41

标签: php iphone encryption nsdata

我是Iphone开发的新手,我想创建一个应用程序,我必须使用我的Iphone应用程序在php服务器上传一些数据。为此,我在Iphone上有一个文件,其内容我必须在php服务器上传。为此,我已经在NSData中转换了文件的内容,现在我想加密这个nsdata对象,然后将它传递给php服务器,在PHP服务器上首先我必须解密nsdata对象然后我必须在服务器上传它

但我无法找到任何方法可以加密Iphone应用程序中的某些数据,然后在php中解密。

而且我想在将加密数据传输到php之前对其进行压缩,然后在php上解压缩该数据。

我的应用程序的完整流程是

           IPhone

NSData - >加密的NsData - >压缩加密数据

           php

压缩加密数据 - >未压缩的加密数据 - >解密(原始)NSData。

有人可以帮助我如何开发此类应用程序?

提前致谢。

拉​​夫

3 个答案:

答案 0 :(得分:3)

我在博客中写了一篇关于此的文章:http://www.em-motion.mobi/?p=139

答案 1 :(得分:0)

最好的方法可能是使用公钥加密系统加密NSData,使用应用程序分发公钥,加密,然后只有您的PHP应用程序能够使用私钥解密。

在PHP中,您可以使用OpenSSL实现公钥/私钥加密。

$key = openssl_pkey_get_private('file:///path/to/my/secure/privatekey', $my_secure_passphrase);
openssl_private_decrypt($nsdata, $decrypted_data, $key);

openssl_private_decrypt()非常有用,因为只要您拥有私钥,它就可以解密您手机上的NSData。我不确定iPhone的加密方式是什么,但我很肯定有一种方法可以使用公钥进行加密。

答案 2 :(得分:0)

您可能希望了解CommonCrypto中的AES加密支持。

我建议为NSData编写一个处理加密的类别。 鉴于您需要能够在不同系统之间进行互操作, 一定要理解“盐”和“初值矢量(IV)”的概念。

正如Xorlev所说,使用公钥加密可以获得最佳安全性。

注意openssl如何存储盐,它是在加密数据之前。 类似的东西:

字符串“Salted__”后跟8字节盐和加密数据。

如果您不需要强大的安全性,只需进行对称加密即可。