2016-12-07 1 views
1

키 탄력이 성을 생성, 탄력이 성 지원 PKCS7PADDING을 수행하지만 난 드릴 수 없습니다 그안드로이드 AES/ECB/PKCS7PADDING 내가 <code>PKCS7</code> 패딩을 지원하지 않습니다 <code>AES/ECB/PKCS7PADDING</code>하지만 자바를 사용하여 임의의 키를 생성 할 내 너 한테 내가이 같은 패딩을 사용할 필요가

내 코드를 사용하여 키를 생성하는 방법을 이해 : 나는 AES에 대한

+0

어쨌든 ECB를 사용하는 이유는 무엇입니까? http://crypto.stackexchange.com/questions/20941/why-shouldnt-i-use-ecb-encryption?noredirect=1&lq=1 – Michael

+0

요구 사항 algo 목록 중 하나를 바꿀 수 없습니다. – GaneshP

답변

1

키 생성 패딩과 함께 아무것도 할 필요가 없습니다 이러한 알고리즘의 오류가 발생하고

Security.addProvider(new BouncyCastleProvider()); 


private byte[] generateSessionKey() throws NoSuchAlgorithmException, NoSuchProviderException { 
     KeyGenerator kgen = KeyGenerator.getInstance("AES/ECB/PKCS7PADDING", "BC"); 
     kgen.init(SYMMETRIC_KEY_SIZE); 
     SecretKey key = kgen.generateKey(); 
     return key.getEncoded(); 
} 

. ECB 및 CBC와 같은 일부 작동 모드에는 패딩이 필요합니다. 그러나 키 자체는 패딩을 또는 모드에 의존하지 않습니다. 따라서 다음을 사용해야합니다.

KeyGenerator kgen = KeyGenerator.getInstance("AES", "BC"); 

의심의 여지없이 작동합니다.


는, PKCS # 7 패딩을 사용 "PKCS7Padding"에 대한 "PKCS5Padding"을 대체하지 마십시오.

패딩 메커니즘과 here의 차이점을 이해하려면 here을 Java의 차이점을 살펴보십시오.

안드로이드는 Bouncy Castle 공급자를 사용하고 있었는데 (그것은 SpongyCastle이 삭제 된 이유 중 하나였습니다), Android와 Java SE 공급자의 차이점을 설명 할 것입니다.

+0

동일한 문제 KeyGenerator AES/ECB/PKCS5Padding 구현을 찾지 못했습니다, SpongyCastle을 시도합니다 – GaneshP

+0

@GaneshP : 당신이 쓴 글에 관심을 기울이지 않을 것입니다. –

+0

@JamesKPolk 제 생각에 그것은 오래된 의견이었습니다. 대답을 수락하는 것이 여전히 있습니다. KeyGenerator 주석을 포함하도록 한 번 대답을 변경했습니다. –

관련 문제