2014-08-31 78 views
3

这是我的代码,用于使用密钥库来保存任意文本作为密钥库中的密钥,我如何获得“密钥库未初始化错误”,我如何初始化密钥库?如何初始化密钥库

public void secretKeyGeneration(View view) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException { 

    KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); 
    byte[] sek = "eru9tyighw34ilty348934i34uiq34q34ri".getBytes(); 
    SecretKey sk = new SecretKeySpec(sek, 0, sek.length, "AES");  
    char[] password = "keystorepassword".toCharArray(); 
    KeyStore.ProtectionParameter protParam = 
    new KeyStore.PasswordProtection(password); 

    KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(sk); 
    ks.setEntry("secretKeyAlias", skEntry, protParam); 

    } 

回答

4

密钥库必须被初始化,因此你必须调用Keystore.load(...)方法。你的情况,你可以调用例如:

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); 
ks.load(null, null); 
byte[] sek = "eru9tyighw34ilty348934i34uiq34q34ri".getBytes(); 
... 
+0

我曾试图ks.load(空)之前并没有工作,但你的ks.load的答案(NULL,NULL)的伟大工程! – user3083447 2014-09-07 13:16:06