2017-07-04 151 views
1

招呼老鄉程序員,加密/解密的iOS(swift3),Android和PHP

這是關於iOS設備(Swift3)加密/解密: 我是IOS迅速初學者。我遵循教程https://www.funboxpower.com/php_android_ios_aes完成Android和PHP之間的加密/解密。

現在我想要做在iOS相同(Swift3)中,作者提到的IOS(對象-C)的方法,因爲這Wanted Compatible AES code Encrypt/Decrypt for Iphone, Android, Windows/XP

所以我覺得CryptoSwift,它幫我把我的字符串進行加密。但結果與Android和PHP不一樣。我該如何使用iOS(Swift3)和CryptoSwift來像教程(Android/PHP)一樣加密/解密?

這裏是斯威夫特加密的代碼:Android上

import CryptoSwift 

class LoginViewController: UIViewController { 
    @IBAction func loginAction(sender: AnyObject) { 
     let account = self.accountTextField.text 
     let password = self.passwordTextField.text 

     let key = "itakeylengthtotalis32keykeykey00" 
     let iv = "0000000000000000" 
     let encryptedAccount = try! account?.aesEncrypt(key:key, iv: iv) 
     let encryptedPassword = try! password?.aesEncrypt(key:key, iv: iv) 

     //result here ------------------------------ 
     print("encryptedAccount: " + encryptedAccount!) 
     print("encryptedPassword: " + encryptedPassword!) 
    } 
} 



extension String { 

    func aesEncrypt(key: String, iv: String) -> String? { 
     var result: String? 
     do { 
      // 用UTF8的編碼方式將字串轉成Data/use Data func for a UT8 string 
      let data: Data = self.data(using: String.Encoding.utf8, allowLossyConversion: true)! 

      // 用AES的方式將Data加密/use AES to encrypt Data 
      let aecEnc: AES = try AES(key: key, iv: iv, blockMode: .CBC, padding:PKCS7()) 
      let enc = try aecEnc.encrypt(data.bytes) 

      // 使用Base64編碼方式將Data轉回字串/use Base64 to encode string 
      let encData: Data = Data(bytes: enc, count: enc.count) 
      result = encData.base64EncodedString() 
     } catch { 
     print("\(error.localizedDescription)") 
     } 

     return result 
} 
+0

你可以看看[RNCryptor](https://github.com/RNCryptor)。涵蓋許多語言。所以你可以在你的'Swift','Java'和'PHP'中完美地使用它,並且功能非常相似。 – nayem

+0

您是否發現了Swift的任何加密和解密代碼。 –

回答

0
  1. 使用的Java 8。
  2. 在Android機器上安裝Java Cryptography Extension
  3. 檢查您的Base64類。
  4. 在此處測試:http://aesencryption.net
  5. 檢查哪個位是兼容的。
  6. 檢查密鑰大小。

測試技巧:使用相同(四)向量intigrated關鍵&在所有三個平臺加密從一個平臺和其他用途嘗試解密加密harcdoded解密文本。

+0

感謝您的提示。在我的項目中,java和php代碼很好。但如何使用Swift進行加密以獲得相同的結果? –