2013-08-26 148 views
0

我有创建大整数值的函数。我想使用这些值作为密钥库的密钥条目。我想知道是否有将这些大整数值作为秘密密钥添加到密钥库的方法。我试图将大整数值转换成秘密密钥,但它得到的错误是大整数不能被转换成秘密密钥。到目前为止,这里是最好的。如何将预定值作为密钥传递给密钥库

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); 
char[] password = "ps".toByteArray(); 
ks.load(null, password); 
.... 
BigInteger sect=getsect(); 
javax.crypto.SecretKey mySecretKey=(SecretKey)sect; 
KeyStore.SecretKeyEntry skEntry = 
    new KeyStore.SecretKeyEntry(mySecretKey); 
ks.setEntry("secretKeyAlias", skEntry, 
    new KeyStore.PasswordProtection(password)); 

因为这不起作用我不知道我怎么可以添加一个值,我希望作为keykey的密钥。下面是我得到

java.math.BigInteger cannot be cast to javax.crypto.SecretKey 

回答

0
  • a tutorials
  • generateSecret() api

    PBEKeySpec keySpec错误消息=新PBEKeySpec(password.toCharArray());

    SecretKeyFactory kf = SecretKeyFactory.getInstance(“PBEWithMD5AndDES”);

    SecretKey passwordKey = kf.generateSecret(keySpec);

+0

我感谢您的回答,但尽管我摆脱了铸造错误,但出现了一个新错误:不能存储非私钥,虽然我特别存储了secretkey。 – eskoba

+0

粘贴错误日志 –

+0

错误:java.security.KeyStoreException:无法存储非私钥//当我尝试在此代码上设置密钥存储区的setEntry()时,会发生非私人密钥ks.setEntry(“secretKeyAlias”,skEntry, new KeyStore.PasswordProtection(密码)); – eskoba

相关问题