2014-11-06 118 views
2

我設法通過橋接頭導入CommonCryptor.h,IOS 3DES在迅速

#import <CommonCrypto/CommonCryptor.h> 

然而,當我試圖加密文本使用CCCrypt方法(參考對象的C的方式),我有一個編譯錯誤。

'Int'不能轉換爲CCOperation。

var key:String = "wKNvJ4NuyW"; 

    func encrypt(text: String) ->String{ 


     var result:CCCryptorStatus = CCCrypt(
      kCCEncrypt, //Error here!!! it says 'Int' is not convertible to CCOperation. 
      kCCAlgorithm3DES, 
      kCCOptionPKCS7Padding | kCCOptionECBMode, 
      key, 
      kCCKeySize3DES, 
      nil, 
      .... 
    } 

有誰告訴我怎麼解決這個問題呢?爲什麼它在object-c中不起作用?

謝謝。

+0

嗨,你可以分享你用於該整個算法中?我遇到了問題,並找不到解決方案 - http://stackoverflow.com/questions/28459736/ios-3des-with-ecb-return-half-correct-data – 2015-02-11 17:56:48

回答

3

您必須將參數轉換爲預期的類型。例如,kCCEncryptInt,但第一個參數的類型爲CCOperation,這是UInt32的別名。 相反(Objective-)C,斯威夫特不隱式轉換類型:

var result = CCCrypt(
    CCOperation(kCCEncrypt), 
    CCAlgorithm(kCCAlgorithm3DES), 
    CCOptions(kCCOptionPKCS7Padding | kCCOptionECBMode), 
    key, 
    UInt(kCCKeySize3DES), 
    ... 
+0

就是這樣!謝謝。 – 2014-11-06 14:44:35