我使用以下方法创建了密钥库:
keytool -genkey -keystore myKeyStore -alias myself
我提供的密码是日语,即“ 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:密钥库被篡改,或者密码不正确.
如果我使用英文密码创建密钥库,并在代码中使用相同的密码,那么它将正常工作.
最初,我使用以下命令创建了密钥库:
keytool -genkey -keystore myKeyStore -alias mks
这将提示我输入我作为myPasswordは输入的密码,然后输入后续详细信息.在这种情况下,代码将生成上述异常.
有趣的是,如果我使用以下命令创建密钥库:
keytool -genkey -keystore myKeyStore-别名mks -storepass myPasswordは
然后我上面给出的代码可以正常工作.我正在使用linux.
解决方法:
好了,从描述中我想控制台不会按预期处理Unicode字符.您可以尝试使用PowerShell或通过执行chcp 65001命令尝试将cmd.exe的代码页更改为UTF-8(请注意,这会扭曲控制台的显示行为,但可以正确接受输入).