2016-10-10 40 views
0

からのSecretKeyを生成し、私はAndroidKeyStoreからSecretKeyを取得しようとしています:この<a href="http://www.programcreek.com/java-api-examples/index.php?api=android.security.keystore.KeyProperties" rel="nofollow">sample</a>によるAndroidKeyStore

KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore"); 
keyStore.load(null); 
SecretKey secretKey = (SecretKey) keyStore.getKey(KEY_NAME, null); 

しかし、私はこの例外を取得:

android.security.keystore.AndroidKeyStoreRSAPrivateKey cannot be cast to javax.crypto.SecretKey 

これは、私は、キーを作成している方法です。

KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(context) 
        .setAlias(KEY_NAME) 
        .setSubject(new X500Principal("CN=" + KEY_NAME)) 
        .setSerialNumber(BigInteger.valueOf(1337)) 
        .setStartDate(START_TIME) 
        .setEndDate(END_TIME) 
        .build(); 
KeyPairGenerator kpGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore"); 
kpGenerator.initialize(spec); 
kpGenerator.generateKeyPair(); 

したがって、 e SecretKeyAndroidKeyStore

+0

「SecretKey」は、非対称キーではなく対称キーで使用されます。 –

+0

@LukePark 'AndroidKeyStore'を使ってどのように対称鍵を生成できますか? –

答えて

1

のAndroid 6.0以来、あなたはAndroidKeystoreを使用してAESキーを生成できます。詳細については

KeyGenerator kg = KeyGenerator.getInstance("AES", "AndroidKeyStore"); 
kg.init(keySpec); 
SecretKey key = kg.generateKey(); 

は(ニコライElenkovによる)のブログ記事Keystore redesign in Android Mを参照してください。

関連する問題

 関連する問題