«Правильный» способ сделать это - использовать цепочку ключей Apple в IOS. К сожалению, как пишет this, это действительно не так безопасно для IOs3. Для ios4 он работает нормально.
У кого-то, возможно, есть платное решение, но вы вполне можете написать его самостоятельно. Вы будете хотеть, чтобы
Выведите ключ от поставки пароля пользователя с помощью ключа функции выведения таких как PBKDF2. На самом деле вам нужно получить два ключа, так что вы гонг, чтобы запустить его дважды с двумя различными солями RANDOM.
Используйте AES с помощью RANDOM IV и один из ваших производных ключей (важные части и весь код примера, который я видел, не были). добавьте соли и IV к вашему зашифрованному тексту
Используйте hmac с другим производным ключом по всем вышеперечисленным данным. Подготовьте это.
Чтобы расшифровать ключи, используя алгоритм деривации ключа с паролем и добавленными солями, регенерируйте hmac, возьмите хэш-файл sha1 сгенерированного и отдельно хэш-файл sha1 из сообщения в сообщении и убедитесь, что они одинаковы (напрямую не напрямую сравнивать hmacs), а затем расшифровывать данные с использованием другого производного ключа и предшествующего IV.
Это боль, чтобы написать и раздражает пользователей, так как они должны положить в отдельный пароль, но нет никакого способа, чтобы сделать это безопасно в противном случае. Если вы храните ключ на iphone, кто-то может его прочитать и расшифровать данные. Да, вы можете зашифровать ключ, но тогда как вы храните этот ключ?
Я не верю, что у яблока есть приличные объективные привязки c для любого из этого, поэтому вам нужно использовать общий API crypto c. Его документировано here. Объектно-ориентированные API, которые кажутся бесполезными, документированы here