2017-07-04 2 views
1

Hallo Kolleginnen und Programmierern,Verschlüsseln/Entschlüsseln zwischen iOS (swift3), Android und PHP

Es geht um ios (swift3) Verschlüsselung/Entschlüsselung: Ich bin ein ios schneller Anfänger. Ich folgte einem Tutorial unter https://www.funboxpower.com/php_android_ios_aes, um die Ver-/Entschlüsselung zwischen Android und PHP abzuschließen.

Jetzt möchte ich auf iOS (swift3) das gleiche zu tun, der Autor erwähnt ios (Objekt-c) Verfahren wie dieses Wanted Compatible AES code Encrypt/Decrypt for Iphone, Android, Windows/XP

so finde ich CryptoSwift und es mir helfen, meine Zeichenfolge zu verschlüsseln. aber das Ergebnis ist nicht dasselbe wie Android und PHP. Wie kann ich iOS (Swift3) mit CryptoSwift zum Verschlüsseln/Entschlüsseln verwenden wie das Tutorial (Android/PHP)? Hier

ist der Code für die Verschlüsselung auf Swift:

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

Sie können [RNCryptor] (https://github.com/RNCryptor) anzeigen. Viele Sprachen sind abgedeckt. Sie können dies also in Ihrem 'Swift',' Java' und 'PHP' problemlos und mit nahezu gleicher Funktionalität verwenden. – nayem

+0

Haben Sie Code zum Verschlüsseln und Entschlüsseln von Swift gefunden? –

Antwort

0
  1. Verwenden Java 8 auf Android.
  2. Installieren Sie Java Cryptography Extension auf Android-Gerät.
  3. Überprüfen Sie Ihre Base64-Klasse.
  4. Testen Sie es hier: .
  5. Überprüfen Sie, welches Bit kompatibel ist.
  6. Überprüfen Sie die Schlüsselgröße.

Testing Tipps: Verwendung derselben (iv) intigrierte Vektor & Schlüssel auf alle von einer Plattform drei Plattform zu verschlüsseln und versuchen, auf andere Verwendung entschlüsseln harcdoded entschlüsselten Text verschlüsselt.

+0

danke für tipps. In meinem Projekt ist Java und PHP-Code in Ordnung. aber wie Swift zu verschlüsseln, um das gleiche Ergebnis zu erhalten? –

Verwandte Themen