
1私钥公钥不是用户自己输入的,是RSA算法自动生成的,而你输入的密码只是打开那个文件或生成的证书的密码
2密码为“changeit”,而如果尝试几次都不成功的话,就到$JAVA_HOME\jre\lib\security\目录下去配就可以了
//将byte数组变成RSAPublicKey
public RSAPublicKey bytes2PK(byte[] buf) {
buf=Base64decode(buf);
byte size=buf[0];
byte size2=buf[1];
byte[] b1 = new byte[size];
Systemarraycopy(buf,2,b1,0,b1length);
byte[] b2 = new byte[size2];
Systemarraycopy(buf,b1length+2,b2,0,b2length);
BigInteger B1 = new BigInteger(b1);
BigInteger B2 = new BigInteger(b2);
RSAPublicKeySpec spec = new RSAPublicKeySpec(B1, B2);//存储的就是这两个大整形数
KeyFactory keyFactory;
PublicKey pk = null;
try {
keyFactory = KeyFactorygetInstance("RSA");
pk = keyFactorygeneratePublic(spec);
} catch (Exception e) {
eprintStackTrace();
}
return (RSAPublicKey)pk;
}
公钥所包含的数据,实际上就是modulus、publicExponent这两个。都可以用byte数组的方式表示。我这边为了网络传输方便,将两个byte数组拼接在了一起。实际上分开存储更容易理解。
实例下载本文介绍RSA2加密与解密,RSA2是RSA的加强版本,在密钥长度上采用2048, RSA2比RSA更安全,更可靠, 本人的另一篇文章RSA已经发表,有想了解的可以点开下面的RSA文章
或许你可以换个思路 ,还是用java 写加密,签名,验签
然后用IKVMNET将java包转成C# dll
aspnet 直接调用这个dll 就是了
这样就不用将java 的私匙和公匙转成C#的了
我当时做一个项目就是采用的这个方法来规避 java 和 C# 在 RSA 上的不同
要直接进行java 和net交互比较难,因为net的非对称加密很好没有实现ASN1,而且net 在实现的时候 加了随机数
以上就是关于java使用keytool生成证书的时候怎们样设置公钥和私钥还有keystore密码是什么全部的内容,包括:java使用keytool生成证书的时候怎们样设置公钥和私钥还有keystore密码是什么、在java中使用KeyFactory将给定字符串转换为RSAPublicKey对象时报错公钥非法、关于java中rsa的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)