我是Iphone开发的新手,我想创建一个应用程序,我必须使用我的Iphone应用程序在php服务器上传一些数据。为此,我在Iphone上有一个文件,其内容我必须在php服务器上传。为此,我已经在NSData中转换了文件的内容,现在我想加密这个nsdata对象,然后将它传递给php服务器,在PHP服务器上首先我必须解密nsdata对象然后我必须在服务器上传它
但我无法找到任何方法可以加密Iphone应用程序中的某些数据,然后在php中解密。
而且我想在将加密数据传输到php之前对其进行压缩,然后在php上解压缩该数据。
我的应用程序的完整流程是
IPhone
NSData - >加密的NsData - >压缩加密数据
php
压缩加密数据 - >未压缩的加密数据 - >解密(原始)NSData。
有人可以帮助我如何开发此类应用程序?
提前致谢。
拉夫
答案 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字节盐和加密数据。
如果您不需要强大的安全性,只需进行对称加密即可。