2014-10-04 86 views
0

我正在開發iOS應用程序。在該應用程序內部,我必須調用SOAP服務併發送加密數據。要與SOAP服務進行通信,我必須使用已經使用Android應用程序的相同配置。在該應用程序下面的代碼存在:如何將Java(Android)加密參數轉換爲iOS加密?

private static final String ENCRYPTION_KEY_TYPE = "DESede"; 
    private static final String ENCRYPTION_ALGORITHM = "DESede/CBC/PKCS7Padding"; 

我需要轉換的是PARAMS這樣我就可以CCCrypt功能使用它們。我猜想DESede鍵類型對應於kCCAlgorithm3DES。對於算法我讀CBC是默認的,所以我想我必須使用kCCOptionPKCS7Padding。我也有iv鍵。

我的推定是否正確?

回答

1

確保密鑰和iv是正確的正確的長度。

「DESede」 是指:
DES(數據加密標準),它不應該被用於新的工作。
ede表示加密,解密,加密3DES(三重DES - 168位,24字節),其密鑰用法與DES相當(單DES -56位,8字節),密鑰分爲三個密鑰第一個用於加密,第二個用於解密,第三個用於加密(ede)。使用不同的加密和解密序列也是可能的,但不是標準的,所以檢查一下。

請注意,每個字節中的高位是奇偶校驗,通常會被忽略。

iv可能會有問題,因爲除非靜態必須與加密數據一起傳輸,否則一種常用方法是將iv預先掛接到加密數據。

填充也可能有所不同,PKCS#7是通用標準,但某些實現(如PHP)使用非標準填充。對於PKCS#7,加密長度爲總是至少比明文數據長一個字節。對於這種類型的加密,PKCS#5基本相同。

+0

10倍重播。我對iOS很新,我對C和Crypto有一些經驗。我在谷歌搜索,我發現[解決方案](http://www.phonesdevelopers.com/1782361/),返回我需要的確切字符串(我從SOAP服務對於給定的一組params正確的字符串)。 – new2ios 2014-10-04 12:04:42