小编ems*_*rth的帖子

加载MSCAPI Java密钥库而不加载私钥(硬令牌)

我想MSCAPI keystore在Java中加载一个并检查MY商店中的可用证书.但是,这些证书的某些密钥驻留在硬件令牌上,并且弹出窗口在加载期间要求令牌.

有没有办法在加载Windows密钥库时推迟加载私钥?

keyStore = KeyStore.getInstance("Windows-MY", "SunMSCAPI");
keystore.load(null,null);
Run Code Online (Sandbox Code Playgroud)

java keystore smartcard

12
推荐指数
1
解决办法
3143
查看次数

如何使“ MessageDigest SHA-1和Signature NONEwithRSA”等效于“ Signature SHA1withRSA”

我对将具有RSA签名的SHA-1哈希应用于某些数据感兴趣,但是我需要分两个步骤进行-先应用哈希,然后对数据签名。Signature.sign()函数似乎会创建一个更复杂的(ASN.1?)数据结构,该数据结构最终会被签名(请参阅此问题)。如何在不使用BouncyCastle之类的任何外部库的情况下使两者等效?

应用哈希并使用签名单步登录:

PrivateKey privatekey = (PrivateKey) keyStore.getKey(alias, null);
...
sig = Signature.getInstance("SHA1withRSA", "SunMSCAPI");
sig.initSign(privatekey);
sig.update(data_to_sign);
byte[] bSignedData_CAPISHA1_CAPIRSA = sig.sign();
Run Code Online (Sandbox Code Playgroud)

通过MessageDigest应用哈希,然后使用签名签名:

PrivateKey privatekey = (PrivateKey) keyStore.getKey(alias, null);
...
MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
byte[] data_to_sign = sha1.digest(bdataToSign);
Signature sig = Signature.getInstance("NONEwithRSA", "SunMSCAPI");
sig.initSign(privatekey);
sig.update(data_to_sign);
byte[] bSignedData_JAVASHA1_CAPIRSA = sig.sign();
...
Run Code Online (Sandbox Code Playgroud)

我正在寻找以下等效项:

bSignedData_JAVASHA1_CAPIRSA == bSignedData_CAPISHA1_CAPIRSA
Run Code Online (Sandbox Code Playgroud)

我的最终目标是创建哈希,然后使用PKCS11令牌签名,但出于验证目的,我要求签名的数据必须与旧数据的格式相同。

java hash rsa keystore sha

5
推荐指数
1
解决办法
3914
查看次数

标签 统计

java ×2

keystore ×2

hash ×1

rsa ×1

sha ×1

smartcard ×1