java - Java RSA 密钥到 C# XML 密钥:将 Java 中的 RSA PublicKey 和 PrivateKey 更改为 C# XML RSAKeyValue XML 字符串?
问题描述
RSACryptoServiceProvider
在 C# 中以如下格式接收键:
对于公钥:
<RSAKeyValue>
<Modulus>21wEnTU+mcD2w0Lfo1Gv4rtcSWsQJQTNa6gio05AOkV/Er9w3Y13Ddo5wGtjJ19402S71HUeN0vbKILLJdRSES5MHSdJPSVrOqdrll/vLXxDxWs/U0UT1c8u6k/Ogx9hTtZxYwoeYqdhDblof3E75d9n2F0Zvf6iTb4cI7j6fMs=</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
对于私钥:
<RSAKeyValue>
<Modulus>21wEnTU+mcD2w0Lfo1Gv4rtcSWsQJQTNa6gio05AOkV/Er9w3Y13Ddo5wGtjJ19402S71HUeN0vbKILLJdRSES5MHSdJPSVrOqdrll/vLXxDxWs/U0UT1c8u6k/Ogx9hTtZxYwoeYqdhDblof3E75d9n2F0Zvf6iTb4cI7j6fMs=</Modulus>
<Exponent>AQAB</Exponent>
<P>/aULPE6jd5IkwtWXmReyMUhmI/nfwfkQSyl7tsg2PKdpcxk4mpPZUdEQhHQLvE84w2DhTyYkPHCtq/mMKE3MHw==</P>
<Q>3WV46X9Arg2l9cxb67KVlNVXyCqc/w+LWt/tbhLJvV2xCF/0rWKPsBJ9MC6cquaqNPxWWEav8RAVbmmGrJt51Q==</Q>
<DP>8TuZFgBMpBoQcGUoS2goB4st6aVq1FcG0hVgHhUI0GMAfYFNPmbDV3cY2IBt8Oj/uYJYhyhlaj5YTqmGTYbATQ==</DP>
<DQ>FIoVbZQgrAUYIHWVEYi/187zFd7eMct/Yi7kGBImJStMATrluDAspGkStCWe4zwDDmdam1XzfKnBUzz3AYxrAQ==</DQ>
<InverseQ>QPU3Tmt8nznSgYZ+5jUo9E0SfjiTu435ihANiHqqjasaUNvOHKumqzuBZ8NRtkUhS6dsOEb8A2ODvy7KswUxyA==</InverseQ>
<D>cgoRoAUpSVfHMdYXW9nA3dfX75dIamZnwPtFHq80ttagbIe4ToYYCcyUz5NElhiNQSESgS5uCgNWqWXt5PnPu4XmCXx6utco1UVH8HGLahzbAnSy6Cj3iUIQ7Gj+9gQ7PkC434HTtHazmxVgIR5l56ZjoQ8yGNCPZnsdYEmhJWk=</D>
</RSAKeyValue>
我在 Java 中创建我的密钥对,如下所示:
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.genKeyPair();
PublicKey publicKey = kp.getPublic();
PrivateKey privateKey = kp.getPrivate();
编辑:
我想知道如何将我在 Java 中创建的密钥转换为 C# XML 密钥?像Porting .Net RSA xml keys to Java这样的问题可以反向执行我想要的操作。它从 C# 读取密钥并生成它们以在 Java 中使用。我需要将 java 键转换为 C# XML 键。
解决方案
从RSAPublicKey (5.24 API Documentation)有关于 Java 类 RSAPublicKey 的方法
java.math.BigInteger getModulus() Returns the modulus of the public key.
java.math.BigInteger getPublicExponent() Returns the public exponent of the public key.
所以从那里你应该能够连接一个格式良好的 Xml 字符串。
这可能也有用How to Generate RSA Keys in Java _ Novixys Software Dev Blog
这也非常接近,它显示了在 C# 代码的两个组件之间通信的 Xml 密钥,尽管它略有不同,因为它是椭圆曲线而不是 RSA。关键方法有FromXmlString
很简单,您调用 Java 对象上的方法来提取模数和指数,构建字符串,将其保存到文件中,然后在 C# 中从文件加载到字符串中并传递到FromXmlString
.
推荐阅读
- python - 将 XLSX 导入到 ServiceNow
- node.js - 请求正文未定义,嵌套属性上的猫鼬验证错误
- firebase - 为什么我在尝试使用 firebase_core 后会出现错误,认为它是 nullsafety?
- android - 如何在 Android Studio 中禁用 recyclerview 特定数据?
- python - 根据第一列的时间对列中的连续变量进行分箱
- python - Ansible 未通过 PIP 安装
- scaling - 在多个迭代\帧中应用一个因子
- angular - 对组件的引用,在“app.component.html”中呈现
- python - 循环遍历列表中的嵌套字典
- hyperledger-fabric - 在 Hyperledger Fabric 中设计更好的私有数据集合