2012-03-12 138 views
0

我改變了我的密鑰庫的傳球:Java密鑰和密碼改變

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 

你能幫助我哪裏不對 ?

回答

2

好的我發現我的錯誤。我必須先運行keypasswd所有條目:

keytool -keypasswd -storetype JCEKS -keystore myKeys.jceks 

然後storepasswd:

keytool -storepasswd -storetype JCEKS -keystore myKeys.jceks 

對整個密鑰庫。

+0

您是否知道任何單個命令一起更改密鑰庫中所有密鑰的密碼? – Aarya 2017-11-10 06:40:46

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

但我不想更改鍵條目 – hudi 2012-03-12 11:19:31

+0

然後,你不應該使用相同的passwdord閱讀商店和加載條目(請參閱我的更新的答案)。 – Robert 2012-03-12 12:00:40