2012-10-10 48 views
2

我創建使用密鑰庫:與KeyStore.load()使用日本口令會導致產生java.io.IOException:密鑰庫被篡改,或密碼不正確

的keytool -genkey -keystore myKeyStore -alias自己

和我已經給密碼是日語,即「MYPASSWORDは」 我使用下面的代碼加載密鑰庫文件

String KEYSTORE_FILE="C:/myKeyStore";//Path to the keystore file on disk. 
PASSWORD="myPasswordは";//Password 

KeyStore.getInstance("JKS").load(new FileInputStream(KEYSTORE_FILE),PASSWORD.toCharArray()); 

上面引發以下異常: java.io.IOException:密鑰庫被篡改,或者密碼不正確。

如果我使用英文密碼創建密鑰庫並在代碼中使用相同的密碼,那麼它可以正常工作。

起初,我創建了使用該命令的密鑰庫: 密鑰工具-genkey -keystore myKeyStore -alias MKS 這將促使我要我輸入作爲MYPASSWORDは,然後我進入後續細節的密碼。在這種情況下,代碼會生成上述異常。

有趣的是,如果我創建一個使用密鑰庫: 密鑰工具-genkey -keystore myKeyStore -alias MKS -storepass MYPASSWORDは 那時,我已上面給出的代碼工作正常。我正在使用Linux。

回答

1

那麼,從描述我猜控制檯不會按預期處理unicode字符。您可以嘗試使用PowerShell或嘗試通過執行chcp 65001命令(請注意,這會扭曲控制檯顯示行爲,但它會正確接受輸入)將cmd.exe的代碼頁更改爲UTF-8。

相關問題