2014-09-28 31 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 ++會在這之前是真的。)