当前位置:  开发笔记 > 编程语言 > 正文

Java安全性 - MSCAPI提供者:如何在没有密码弹出的情况下使用?

如何解决《Java安全性-MSCAPI提供者:如何在没有密码弹出的情况下使用?》经验,为你挑选了1个好方法。

我已经设法在我的应用程序中使用Sun的MSCAPI提供程序.我现在遇到的问题是它总是弹出一个窗口,要求输入密码,即使我已经在代码中提供了密码.这是一个问题,因为我需要在Web服务中使用加密功能.

这是我现在的代码:

String alias = "Alias to my PK";
char[] pass = "MyPassword".toCharArray();

KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, pass);
Provider p =  ks.getProvider();

Signature sig = Signature.getInstance("SHA1withRSA",p);
PrivateKey key = (PrivateKey) ks.getKey(alias, pass)

sig.initSign(key);
sig.update("Testing".getBytes());
sig.sign();

这工作得很好,但是当最后一行运行时,我会弹出一个要求输入密码的弹出窗口.我该如何预防呢?



1> Rasmus Faber..:

MSCAPI提供程序不支持将密码提供给CAPI:

假定必须提供密码的应用程序支持兼容模式。它允许(但忽略)非空密码。默认情况下启用该模式。(1)

要通过CAPI设置密码,您必须使用未记录的KP_KEYEXCHANGE_PIN或KP_SIGNATURE_PIN 调用CryptSetKeyParam,并希望您的基础硬件令牌提供者支持它。(它们并非完全没有文档-Windows CE和Windows Mobile的文档中提到了它们(2),它们包含在头文件中)。

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有