2012-10-10 51 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。

相关问题