2014-09-28 38 views
0

阅读meta后,我相信这是这个问题的最佳位置(我不确定它是否属于这里,因为它不是特定的代码)。 现在的问题是:Apple的Swift编程语言是否适合密码学密集型iOs/MAC OS X项目? 为什么这个问题关注我是swift与Objective-C兼容,但我不确定它与C++ crypto库的兼容性如何?我正在考虑在应用程序的加密端使用C++库(例如:Crypto ++)。有没有人在一个快速的应用程序中集成了这样一个库?是可行的还是最好的选择是为该库执行Objective-C++包装并使用Objective-C中的包装?C++ crypto库在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),你应该先看看那些。 – 2014-09-28 10:59:38

+0

问题是我不希望苹果提供的默认加密。事实上,只有在C++加密库中才有99%的需求。 (事情像蛇和布莱克2,NTRU)。大多数C库都没有这些算法。 – user1028028 2014-09-28 11:04:01

+0

你可以用C编写包装器,然后用Swift包装到C包装器中。这应该工作。 – Marcin 2015-02-13 10:57:30

回答

2

Swift目前没有办法直接与C++交互。你必须用ObjC++实现来包装所有的ObjC接口。如果你打算使用Crypto ++(如果你需要CommonCrypto中没有的算法,那很好),那么我个人会用纯C++编写所有低级的东西,并且只需在Swift中使用UI就可以使用一个小的使用ObjC++接口层读取结果。

我总是建议最大限度地减少ObjC++的占用空间,所以即使你在ObjC而不是Swift中编写它,我的建议也是一样的。在纯ObjC中编写UI代码,在C++中编写引擎,并在它们之间放置一个薄薄的ObjC++层。 (注意,我对ObjC++有很强烈的偏见,因为我已经被糟糕的工具支持和性能影响多次烧毁了。每次发布clang都会使ObjC++更好一些,有可能某一天我的偏差并不准确,而ObjC++将会是一种很好的语言。但我认为今天不是这样,我认为Swift ++会在这之前是真的。)