我使用以下代码从雅典娜智能卡读取器中访问PKCS#11智能卡的内容。
Provider pkcs11Provider = new SunPKCS11(new ByteArrayInputStream (config.getBytes()));
if (Security.getProvider(pkcs11Provider.getName()) != null) {
Security.removeProvider(pkcs11Provider.getName());
}
Security.addProvider(pkcs11Provider);
KeyStore myKeyStore = KeyStore.getInstance ("PKCS11", pkcs11Provider);
myKeyStore.load(null, keystore_password.toCharArray());
return myKeyStore;问题如下:
根据http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html的说法,当使用KeyStore.Builder类时,在第一次成功地使用相同的智能卡加载之后,不需要任何密码。当然,我不会在上面的代码中使用这个类。同样的情况是否适用于KeyStore.getInstance(...)方法?在输入错误密码时,是否有任何方法使密钥存储库抛出异常,而不管以前的加载尝试如何?
发布于 2013-06-20 16:50:47
尝尝这个
((SunPKCS11) pkcs11Provider ).logout();
pkcs11Provider.clear();如果这没有帮助,那么在每次登录之前用新创建的SunPKCS11对象替换提供程序
https://stackoverflow.com/questions/17077049
复制相似问题