首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java安全- MSCAPI提供程序:如何在没有密码弹出的情况下使用?

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

Stack Overflow用户
提问于 2009-01-30 12:39:39
回答 3查看 7.5K关注 0票数 7

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

下面是我现在拥有的代码:

代码语言:javascript
复制
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();

这很好用,但是当最后一行运行时,我会得到一个弹出窗口,要求输入密码。我如何防止这种情况发生?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-01-30 15:00:28

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

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

要通过CAPI设置密码,您必须使用未记录的KP_KEYEXCHANGE_PIN或KP_SIGNATURE_PIN调用CryptSetKeyParam,并希望您的底层硬件令牌提供商支持它。(它们并不是完全无文档记录的- Windows CE和Windows Mobile的文档提到它们是(2),并且它们包含在头文件中)。

票数 5
EN

Stack Overflow用户

发布于 2009-01-30 13:31:59

我的猜测是Windows正在弹出弹出窗口。

使用证书导入向导再次导入您的密钥,但请确保您没有选中“密码”屏幕上的以下选项。

_启用强私钥保护。如果启用此选项,则每次应用程序使用私钥时都会提示您。

票数 0
EN

Stack Overflow用户

发布于 2014-05-01 02:12:48

我通过如下方式设置提供程序解决了这个问题:

signeData = gen.generate(content, ks.getProvider());

哪里

ks是一个KeyStore

gen是一个CMSSignedDataGenerator

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/495392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档