java密钥库和密码更改

java密钥库和密码更改,java,keytool,Java,Keytool,我更改了密钥库的密码: keytool -list -storetype JCEKS -keystore store.jceks -storepasswd -new secret 这里有三个条目 passwd = new char[] { 's', 'e', 'c', 'r', 'e', 't' }; fis = new FileInputStream("myKeys.jceks"); ks.load(fis, passwd); KeyStore

我更改了密钥库的密码:

keytool -list -storetype JCEKS -keystore store.jceks -storepasswd -new secret
这里有三个条目

        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

您能告诉我怎么回事吗?

您可能更改了密钥存储的密码,但没有更改密钥条目的密码? 两者都可以单独更改

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));

您可以更改密钥存储的密码,但不能更改密钥条目的密码吗? 两者都可以单独更改

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));

好吧,我发现了我的错误。我必须首先为所有条目运行keypasswd:

keytool -keypasswd -storetype JCEKS -keystore myKeys.jceks
然后是storepasswd:

keytool -storepasswd -storetype JCEKS -keystore myKeys.jceks

整个密钥库。

好的,我发现了我的错误。我必须首先为所有条目运行keypasswd:

keytool -keypasswd -storetype JCEKS -keystore myKeys.jceks
然后是storepasswd:

keytool -storepasswd -storetype JCEKS -keystore myKeys.jceks

用于整个密钥库。

但是我不想更改密钥条目那么您不应该使用相同的密码读取存储和加载条目(请参阅我的更新答案)。但是我不想更改密钥条目那么您不应该使用相同的密码读取存储和加载条目(请参阅我的更新答案)。您知道一起更改密钥库中所有密钥的密码的任何单个命令吗?您知道一起更改密钥库中所有密钥的密码的任何单个命令吗?