Шифрование 3DES в Objective-C - PullRequest
2 голосов
/ 25 июня 2011

Я нахожусь в процессе создания приложения для iMac и iPhone.Цель приложения - зашифровать текстовые сообщения, электронные письма, пароли, даты и т. Д. Я провел некоторое исследование и обнаружил, что 3DES будет работать отлично и очень безопасно.Кто-нибудь знает, как реализовать 3DES в Objective-C для iPhone или Mac?Любая помощь будет оценена!Спасибо!

Ответы [ 3 ]

11 голосов
/ 25 июня 2011

И iOS, и OS X имеют библиотеку CommonCrypto, которая обеспечивает реализации AES, 3DES и DES, среди прочего. Написание собственной криптографической библиотеки сложно, подвержено ошибкам и может привести к ошибкам. Кроме того, если вы пишете свою собственную библиотеку шифрования, то вам необходимо объявить ее и пройти процедуру одобрения правительством США, если вы когда-нибудь планируете поместить ее в App Store.

6 голосов
/ 25 июня 2011

DES - старый стандарт, который больше не является безопасным из-за его длины короткого ключа; 3DES - это один из способов сделать его более безопасным (использует в три раза больше ключевых битов). Но новым стандартом является AES, который вы можете попробовать, если не найдете (или не любите) библиотеки DES, которые соответствуют вашим потребностям. Например, вы можете использовать OpenSSL или libgcrypt .

Но я бы не стал реализовывать это с нуля. Реализация криптографических алгоритмов довольно сложна. Вы должны быть осторожны с заполнителями, генераторами случайных чисел, и вы должны знать, что описания этих алгоритмов в учебниках, как правило, упрощены (и небезопасны для реального использования). Одна книга, которая может помочь, если вы действительно хотите внедрить криптографию, - это «1007 *« Современная криптография »Вэньбо Мао * . Если вы ориентированы на математику, вы также можете использовать «1011 *« Введение в современную криптографию »Каца и Линделла .

1 голос
/ 25 июня 2011

Вероятно, не имеет смысла пытаться повторно реализовать DES или любой другой алгоритм шифрования в Objective-C, когда есть известные версии, реализованные на C и / или C ++.Вы можете просто вызвать любой из них из вашей программы Objective-C.

...