Зашифруйте nsdata в iphone и расшифруйте его в php - PullRequest
3 голосов
/ 20 февраля 2010

Я новичок в разработке для Iphone, я хочу создать приложение, в котором я должен загрузить некоторые данные на php-сервер, используя мое приложение для Iphone. Для этого у меня есть файл на Iphone, содержимое которого я должен загрузить на php-сервер. Для этого я преобразовал содержимое файла в NSData, и теперь я хочу зашифровать этот объект nsdata, а затем передать его на php-сервер, и сначала на php-сервере я должен расшифровать объект nsdata, а затем загрузить его на сервер .

Но я не могу найти какой-либо способ, которым я могу зашифровать некоторые данные в приложении Iphone и затем расшифровать их в php.

А также я хочу сжать зашифрованные данные перед их передачей в php, а затем распаковать эти данные в php.

Полный поток моей заявки

           IPhone

NSData -> Зашифрованные NsData -> Сжатые зашифрованные данные

           php

Сжатые зашифрованные данные -> несжатые зашифрованные данные -> дешифрованные (оригинальные) NSData.

Может кто-нибудь помочь мне, как я могу разработать такое приложение?

Заранее спасибо.

Gaurav

Ответы [ 3 ]

3 голосов
/ 09 мая 2010

Я написал статью об этом в своем блоге: http://www.em -motion.mobi /? P = 139

0 голосов
/ 20 февраля 2010

Возможно, вы захотите взглянуть на поддержку шифрования AES в CommonCrypto.

Я бы предложил написать категорию для NSData, которая обрабатывает шифрование. Учитывая, что вам нужно иметь возможность взаимодействовать между различными системами, Обязательно поймите понятия «соль» и «вектор начального значения (IV)».

Как сказал Ксорлев, наилучшая защита достигается при использовании криптографии с открытым ключом.

Позаботьтесь о том, как openssl хранит соль, это до зашифрованных данных. что-то вроде:

строка «Salted__», за которой следует 8-байтовая соль и зашифрованные данные.

Если вам не нужна надежная защита, просто выполните симметричное шифрование.

0 голосов
/ 20 февраля 2010

Возможно, лучшим способом было бы зашифровать 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 есть способ шифрования, но я уверен, что есть способ шифрования с использованием открытого ключа.

...