keyloadtool_无法使用Java / Keytool签署挖掘信号

在尝试使用Java的Keytool签署文本并进行数字签名时,遇到了`InvalidKeyException`,提示提供的密钥不是`RSAPrivateKey`实例。问题可能源于证书创建时使用的密钥算法不匹配。尽管keytool页面提到了使用RSA签名,但尝试使用相应标志时返回了`NoSuchAlgorithmException`。
摘要由CSDN通过智能技术生成

我基本上直接从keytool示例页面创建了一个证书:

keytool -genkey -dname “cn=Anything, ou=Anything, o=Anything, c=US” -alias business -keypass kpi135 -keystore C:\mykeystore -storepass ab987c -validity 1095

我正在尝试访问此证书,并使用私钥部分对文本的一部分进行数字签名以与第三方进行身份验证.以下是我尝试的代码:

//Add bouncyCastle as a provider

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

KeyStore keystore = KeyStore.getInstance("JKS");

keystore.load(new FileInputStream("C:\\mykeystore"), "ab987c".toCharArray());

Signature sig = Signature.getInstance("MD5withRSA", "BC");

PrivateKey privateKey = (PrivateKey)keystore.getKey("business", "kpi135".toCharArray()); //Exception here

sig.initSign(privateKey);

sig.update("myUID__myNonce".getBytes());

byte[] digitalSignature = sig.sign();

System.out.println("Signature Formulated: " + digitalSignature);

我得到以下异常:

java.security.InvalidKeyException: Supplied key (sun.security.provider.DSAPrivat

eKey) is not a RSAPrivateKey instance

at org.bouncycastle.jce.provider.JDKDigestSignature.engineInitSign(Unkno

wn Source)

at java.security.Signature$Delegate.engineInitSign(Signature.java:1095)

at java.security.Signature.initSign(Signature.java:480)

at MainClass.(MainClass.java:15)

at MainClass.main(MainClass.java:28)

我认为这是因为我以某种方式使用了错误的密钥类型创建了证书,但是我不确定通过挖掘keytool页面可以找到所需的证书.它确实提到您显然可以使用-keysig RSA和-sigalg RSA生成密钥,但是当我在创建证书时尝试使用这些标志时,会得到:

keytool error: java.security.NoSuchAlgorithmException: RSA Signature not availab

le

enter code here

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值