2015-11-03 92 views
1

我是新的swift。我对Android的AES代码,所以我需要迅速2AES代码。我发现很多AES的代码,但没有找到相同的代码swift 2和Android。请建议我。相同的AES代码swift 2和android

这段代码的Android:

public class AES { 
public static String SALT = "8e0b86611d5922ffd57fcc053644ff6d73459b2b"; 
public static SecretKeySpec getKey(String myKey) { 
    MessageDigest sha = null; 
    byte[] key; 
    try { 
     key = myKey.getBytes("UTF-8"); 
     sha = MessageDigest.getInstance("SHA-1"); 
     key = sha.digest(key); 
     key = Arrays.copyOf(key, 16); // use only first 128 bit 
     return new SecretKeySpec(key, "AES"); 
    } catch (NoSuchAlgorithmException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return null; 
} 

public static String encrypt(String strToEncrypt, String password) { 
    try { 
     Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); 
     cipher.init(Cipher.ENCRYPT_MODE, getKey(password)); 
     return Base64.encodeBase64String(cipher.doFinal(strToEncrypt.getBytes("UTF-8"))); 
    } catch (Exception e) { 
     System.out.println("Error while encrypting: " + e.toString()); 
    } 
    return null; 

} 

public static String decrypt(String strToDecrypt, String password) { 
    try { 
     Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING"); 
     cipher.init(Cipher.DECRYPT_MODE, getKey(password)); 
     return new String(cipher.doFinal(Base64.decodeBase64(strToDecrypt))); 
    } catch (Exception e) { 
     System.out.println("Error while decrypting: " + e.toString()); 
    } 
    return null; 
} 


public static void main(String args[]) { 
    String text = "Hello World!"; 
    String encrypt = AES.encrypt(text,SALT); 

    System.out.println("String to Encrypt: " + text); 
    System.out.println("Encrypted: " + encrypt); 

    System.out.println("String To Decrypt : " + encrypt); 
    System.out.println("Decrypted : " + AES.decrypt(encrypt,SALT)); 
} 

} 
+0

如果可以,PLZ写迅速 – Clever

+0

有几个斯威夫特AES例子AES码上SO,寻找他们。 – zaph

+0

@zaph感谢回答 – Clever

回答

-1

我会建议不要写你自己的AES加密,并使用CryptoSwift代替。

+0

我会建议不要使用CryptoSwift,除其他事项外CryptoSwift AES慢500至1000倍,比苹果提供的公共密码,因为它不使用iOS硬件加密引擎。此外,它没有经过充分审查并可能包含错误。 CryptoSwift患有相同的建议“反对编写自己的AES加密”,因为这是CryptoSwift作者所做的。 – zaph