2016-09-07 5 views
1

AES 알고리즘을 통해 일부 데이터를 암호화하려고합니다. iOS의 경우 AESCrypt 라이브러리를 사용하고 있으며 Android의 경우 Cipher Library를 사용하고 있지만 여기에서는 동일한 알고리즘을 사용하고 있지만 동일한 결과는 아닙니다.AES 암호화 (AES/ECB/NoPadding)

public static String encryptMethod(String seedBase64, byte[] key) { 
    try { 
     byte[] seed = Base64.decode(seedBase64, 0); 
     SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); 
     Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding"); 
     cipher.init(1, keySpec); 
     return Base64.encodeToString(cipher.doFinal(seed), 0); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 
+0

cipher = Cipher.getInstance ("AES/CBC/PKCS7Padding"); –

+0

자바 코드에 대한 확신은 내가 필요한 결과를 제공하기 때문에 내 문제는 IOS와 관련이있다 ... –

+0

패딩을 사용하고 패딩을 사용하지 않아야한다. – Paulw11

답변

0

때때로 결과가 다르다, 그래서 내가 어떤 크로스 플랫폼을 사용하는 것이 좋습니다 것입니다 서로 다른 플랫폼에 패딩에 문제가 있습니다

NSString *encryptedData = [AESCrypt encrypt:message password:password]; 

자바 코드 : 어떤 도움

아이폰 OS 코드 주시면 감사하겠습니다 이런 식으로 도서관. https://github.com/Pakhee/Cross-platform-AES-encryption

+0

나는이 라이브러리와 심지어 RNEncryptor를 사용했지만 여전히 결과가 내 안드로이드 코드와 다릅니다. 정상입니까? –

+0

추천하는 라이브러리는 여러 언어/플랫폼을 지원하지만 메시지 인증 코드를 통한 무결성 검사와 같은 중요한 기능 하나가 부족합니다. RNCryptor는 이와 관련하여 훨씬 뛰어납니다. –