2017-01-14 3 views
1

AES/CBC/PKCS5Padding에 :안드로이드 키 스토어 : 지원되지 않는 비밀 키 알고리즘 : 나는 다음과 같은 코드를 사용하여 안드로이드 키 스토어의 AES 키를 저장하기 위해 노력하고

SecretKey AESkey = new SecretKeySpec(
    byteKey, 0, byteKey.length, "AES/CBC/PKCS5Padding"); 

if (ks == null) 
{ 
    ks = KeyStore.getInstance("AndroidKeyStore"); 
    ks.load(null); 
} 

ks.deleteEntry("aes_key"); 
ks.setEntry("aes_key", 
    new KeyStore.SecretKeyEntry(AESkey), 
    new KeyProtection.Builder(KeyProperties.PURPOSE_ENCRYPT | 
     KeyProperties.PURPOSE_DECRYPT) 
     .setBlockModes(KeyProperties.BLOCK_MODE_CBC) 
     .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) 
     .build()); 

와 라인 '지정해 setEntry (...)' 던지기 실패 :

java.security.KeyStoreException: java.lang.IllegalArgumentException: Unsupported secret key algorithm: AES/CBC/PKCS5Padding 

어떻게하면 Android.KeyStore에 내 키를 저장할 수 있습니까?

+0

'CBC'와 'PKCS5Padding'은 키의 일부가 아니지만 키 크기는입니다. – zaph

+0

@zaph 당신은 새로운 SecretKeySpec ( byteKey, 0, byteKey.length, "AES/CBC/PKCS5Padding")을 변경해야한다고 말하고 싶습니다. 새로운 SecretKeySpec에 ( byteKey, 0, byteKey.length, "AES"); ? – JoeFox

답변

1

CBC 및 PKCS5Padding은 키의 일부가 아니지만 키 크기는입니다.

"AES"를 사용하면 오류 메시지가 표시됩니다.

SecretKey AESkey = new SecretKeySpec(byteKey, 0, byteKey.length, "AES"); 

문서는 기껏 얇은 내가 찾을 수있는 가장 가까운 SecretKeyFactory Algorithms는 "AES"는 AES 알고리즘과 함께 사용하기위한 비밀 키를 구축합니다. 참조 : SecretKeyFactory Algorithms.