我更改了密钥库的传递:
keytool -list -storetype JCEKS -keystore store.jceks -storepasswd -new secret
这里我有3个条目
passwd = new char[] { 's', 'e', 'c', 'r', 'e', 't' };
fis = new FileInputStream("myKeys.jceks");
ks.load(fis, passwd);
KeyStore.SecretKeyEntry skEntry = (KeyStore.SecretKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection(
passwd));
这里我有例外:
java.security.UnrecoverableKeyException: Given final block not properly padded
你能帮我解决什么问题吗?
答案 0 :(得分:2)
可能是您更改了密钥存储区的密码而不是密钥条目的密码? 两者都可以单独更改。
passwdStore = new char[] { 's', 'e', 'c', 'r', 'e', 't' };
passwdEntry = new char[] { 'p', 'a', 's', 's', 'w', '2' };
fis = new FileInputStream("myKeys.jceks");
ks.load(fis, passwdStore);
KeyStore.SecretKeyEntry skEntry = (KeyStore.SecretKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection(passwdEntry));
答案 1 :(得分:2)
好的,我发现了自己的错误。我必须首先为所有条目运行keypasswd:
keytool -keypasswd -storetype JCEKS -keystore myKeys.jceks
然后是storepasswd:
keytool -storepasswd -storetype JCEKS -keystore myKeys.jceks
用于整个密钥库。