gpt4 book ai didi

java - PKCS#11 keystore 在成功尝试输入密码后不验证密码

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:51 26 4
gpt4 key购买 nike

我正在使用以下代码从 Athena 智能卡读卡器访问 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;

问题如下:

  1. 我输入了错误的密码。
  2. 代码抛出异常(如预期)。
  3. 我输入了正确的密码。
  4. 代码没有抛出异常(如预期的那样)。
  5. 我输入了错误的密码。
  6. 代码不会抛出异常(意外)。

根据 http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html ,当使用 KeyStore.Builder 类时,在使用同一张智能卡首次成功加载后不需要密码。当然,我没有在上面的代码中使用这个类。同样的事情是否适用于 KeyStore.getInstance(...) 方法?有什么方法可以让 keystore 在输入错误密码时抛出异常,而不管之前的加载尝试如何?

最佳答案

试试这个

((SunPKCS11) pkcs11Provider ).logout();
pkcs11Provider.clear();

如果这没有帮助,则在每次登录前用新创建的 SunPKCS11 对象替换提供者

关于java - PKCS#11 keystore 在成功尝试输入密码后不验证密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com