3

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

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

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

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

           IPhone

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

           php

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

有人可以帮助我如何开发这样的应用程序吗?

提前致谢。

高拉夫

4

2 回答 2

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 有什么加密方式,但我很肯定有一种方法可以使用公钥进行加密。

于 2010-02-20T08:02:43.220 回答
0

您可能想看看 CommonCrypto 中的 AES 加密支持。

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

正如 Xorlev 所说,最好的安全性是通过使用公钥加密获得的。

注意 openssl 如何存储盐,它在加密数据之前。就像是:

字符串 "Salted__" 后跟 8 个字节的 salt 和加密数据。

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

于 2010-02-20T13:18:51.847 回答