2014-09-28 2 views
0

после прочтения meta Я считаю, что это лучшее место для этого вопроса (я не был уверен, что он принадлежит здесь, поскольку речь идет не о конкретном коде). Вопрос: Является ли язык программирования Apple Swift подходящим для криптографического интенсивного проекта iOS/MAC OS X? Почему этот вопрос касается меня, так это то, что swift совместим с объективом C, но я не уверен, насколько он совместим с C++-библиотеками? Я думаю об использовании библиотеки C++ для криптографической части приложения (например: Crypto ++). Кто-нибудь интегрировал такую ​​библиотеку в быстрое приложение? Возможно ли это, или наилучшим вариантом будет сделать обертку Objective-C++ для библиотеки и использовать ее с Objective-C?C++ crypto library use in Apple Swift

+0

Проще всего было бы использовать библиотека C, поскольку Objective-C является надмножеством C. Это говорит о том, что они предоставляют [свой набор криптографических библиотек и сервисов] (https://developer.apple.com/library/mac/documentation/security/Conceptual/cryptoservices /Introduction/Introduction.html#//apple_ref/doc/uid/TP40011172-CH1-SW1), и вам, вероятно, следует сначала изучить их. –

+0

Проблема в том, что я не хочу, чтобы криптография по умолчанию, предоставляемая apple. На самом деле 99% того, что нужно, только в Crypto-библиотеках C++. (Такие вещи, как Змея и Блейк2, NTRU). В большинстве библиотек C также нет тысяч алгоритмов. – user1028028

+0

Вы можете написать обертку в C для этого, затем обертку в Swift для этой C-оболочки. Это должно сработать. – Marcin

ответ

2

В настоящее время Swift не имеет возможности напрямую взаимодействовать с C++. Вам нужно было бы обернуть все в интерфейсах ObjC с реализациями ObjC++. Если вы собираетесь работать с Crypto ++ (это нормально, если вам нужны алгоритмы, недоступные в CommonCrypto), то лично я бы написал все низкоуровневые материалы в чистом C++ и просто выполнил работу пользовательского интерфейса в Swift, используя небольшую Уровень интерфейса ObjC++ для чтения результатов.

Я всегда рекомендую минимизировать след ObjC++, поэтому, даже если вы написали это в ObjC, а не в Swift, моя рекомендация будет такой же. Напишите код UI в чистом ObjC и движке на C++ и поставьте тонкий слой ObjC++ между ними.

(Обратите внимание, что у меня есть сильный уклон против ObjC++, потому что я был сожжен с его паршивой поддержкой инструмента, и производительность сильно влияет на него. Каждый выпуск clang сделал ObjC++ немного лучше, и возможно, когда-нибудь мой смещение не будет точным, и ObjC++ будет прекрасным языком для работы. Но я не думаю, что этот день сегодня, и я думаю, что Swift ++ появится до того, как это все равно.)