exponent modulus 根据_获取模量和publicExponent从Java公钥

OpenSSLRSAPublicKey {模= e6f4b594e1757261a98abe478f47b941cf8339933accc57d73d18bb8da906cf628da1949fb71c51f1635d93067ca2993599965f42d26237f63c1bc333de779051c36805f00ab5698a78e5616a7a7b0df487ba0fb3a89592780984562b96387443774331358a5920815bba2e24ad6c6c4ba6c7f52384847b4feea20190acdef000f6ee078352c0e0764e51dab25037d3d9c819a9be9ea240260ca2217ea4b446caf05d14318941a844ee82f567382c9fad8b959481c27785cdf6cb22ecf80f51bddc9f1c918d56b9bdd80ba4e766209069d0cf2012c0f15dbe4a8b5c2588a0ce295c2e90d44a52190289ab2fdceb22feffdadf623cab33e6a2e98be662cd5fecb,publicExponent = 10001}

使用波纹管代码

KeyPairGenerator kpg;

KeyPair kp;

PublicKey publicKey;

kpg = KeyPairGenerator.getInstance("RSA");

kpg.initialize(2048);

kp = kpg.genKeyPair();

publicKey = kp.getPublic();

现在我想从这个获得模和publicExponent。

任何人都可以请求...?

+3

这里没有问题。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java和.NET中,RSA密钥的存储格式不同,因此需要进行格式转换才能实现密钥的交换。下面是Java和.NET之间RSA密钥格式转换的详细步骤。 1. 将Java中的公钥格式转换为.NET中的公钥格式: Java中的公钥格式为X.509证书格式,需要将其转换为XML格式。具体步骤如下: ``` KeyFactory keyFactory = KeyFactory.getInstance("RSA"); X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKeyBytes); PublicKey publicKey = keyFactory.generatePublic(publicKeySpec); StringWriter sw = new StringWriter(); XmlWriter xw = XmlWriter.Create(sw); RSAParameters parameters = new RSAParameters(); parameters.Modulus = publicKey.getModulus().toByteArray(); parameters.Exponent = publicKey.getPublicExponent().toByteArray(); xw.WriteStartElement("RSAKeyValue"); xw.WriteElementString("Modulus", Convert.ToBase64String(parameters.Modulus)); xw.WriteElementString("Exponent", Convert.ToBase64String(parameters.Exponent)); xw.WriteEndElement(); xw.Flush(); ``` 2. 将Java中的私钥格式转换为.NET中的私钥格式: Java中的私钥格式为PKCS#8格式,需要将其转换为XML格式。具体步骤如下: ``` KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyBytes); PrivateKey privateKey = keyFactory.generatePrivate(privateKeySpec); StringWriter sw = new StringWriter(); XmlWriter xw = XmlWriter.Create(sw); RSAParameters parameters = new RSAParameters(); parameters.Modulus = privateKey.getModulus().toByteArray(); parameters.D = privateKey.getPrivateExponent().toByteArray(); parameters.P = privateKey instanceof RSAPrivateCrtKey ? ((RSAPrivateCrtKey)privateKey).getPrimeP().toByteArray() : null; parameters.Q = privateKey instanceof RSAPrivateCrtKey ? ((RSAPrivateCrtKey)privateKey).getPrimeQ().toByteArray() : null; parameters.DP = privateKey instanceof RSAPrivateCrtKey ? ((RSAPrivateCrtKey)privateKey).getPrimeExponentP().toByteArray() : null; parameters.DQ = privateKey instanceof RSAPrivateCrtKey ? ((RSAPrivateCrtKey)privateKey).getPrimeExponentQ().toByteArray() : null; parameters.InverseQ = privateKey instanceof RSAPrivateCrtKey ? ((RSAPrivateCrtKey)privateKey).getCrtCoefficient().toByteArray() : null; xw.WriteStartElement("RSAKeyValue"); xw.WriteElementString("Modulus", Convert.ToBase64String(parameters.Modulus)); xw.WriteElementString("Exponent", Convert.ToBase64String(privateKey.getPublicExponent().toByteArray())); xw.WriteElementString("D", Convert.ToBase64String(parameters.D)); xw.WriteElementString("P", Convert.ToBase64String(parameters.P)); xw.WriteElementString("Q", Convert.ToBase64String(parameters.Q)); xw.WriteElementString("DP", Convert.ToBase64String(parameters.DP)); xw.WriteElementString("DQ", Convert.ToBase64String(parameters.DQ)); xw.WriteElementString("InverseQ", Convert.ToBase64String(parameters.InverseQ)); xw.WriteEndElement(); xw.Flush(); ``` 3. 将.NET中的公钥格式转换为Java中的公钥格式: .NET中的公钥格式为XML格式,需要将其转换为X.509证书格式。具体步骤如下: ``` XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlPublicKey); RSAParameters parameters = new RSAParameters(); parameters.Modulus = Convert.FromBase64String(doc.SelectSingleNode("//Modulus").InnerText); parameters.Exponent = Convert.FromBase64String(doc.SelectSingleNode("//Exponent").InnerText); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.ImportParameters(parameters); RSACryptoServiceProvider rsaPublic = new RSACryptoServiceProvider(); rsaPublic.ImportParameters(rsa.ExportParameters(false)); byte[] x509publicKey = rsaPublic.ExportCspBlob(false); ``` 4. 将.NET中的私钥格式转换为Java中的私钥格式: .NET中的私钥格式为XML格式,需要将其转换为PKCS#8格式。具体步骤如下: ``` XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlPrivateKey); RSAParameters parameters = new RSAParameters(); parameters.Modulus = Convert.FromBase64String(doc.SelectSingleNode("//Modulus").InnerText); parameters.D = Convert.FromBase64String(doc.SelectSingleNode("//D").InnerText); parameters.P = Convert.FromBase64String(doc.SelectSingleNode("//P").InnerText); parameters.Q = Convert.FromBase64String(doc.SelectSingleNode("//Q").InnerText); parameters.DP = Convert.FromBase64String(doc.SelectSingleNode("//DP").InnerText); parameters.DQ = Convert.FromBase64String(doc.SelectSingleNode("//DQ").InnerText); parameters.InverseQ = Convert.FromBase64String(doc.SelectSingleNode("//InverseQ").InnerText); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.ImportParameters(parameters); byte[] pkcs8privateKey = rsa.ExportPkcs8PrivateKey(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值