Ключ Java RSA к ключу C # XML: Заменить RSA PublicKey и PrivateKey в Java на C # XML Строка XML RSAKeyValue? - PullRequest
0 голосов
/ 30 апреля 2018

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? Такие вопросы, как Перенос XML-ключей .Net RSA на Java делает то, что я хочу, в обратном направлении. Он читает ключи из C # и генерирует их для использования внутри Java. Мне нужно преобразовать Java-ключи в C # XML-ключи.

1 Ответ

0 голосов
/ 30 апреля 2018

С RSAPublicKey (5.24 API Документация) существуют методы в классе 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.

Это также может быть полезно Как генерировать ключи RSA в Java _ Блог разработчиков программного обеспечения Novixys

Этот также довольно близок , он показывает, что ключи Xml передаются между двумя компонентами кода C #, хотя он немного отличается тем, что это Elliptic Curve, а не RSA. Ключевой метод: FromXmlString

Проще говоря, вы вызываете методы для объекта Java для извлечения модуля и экспоненты, вы строите строку, сохраняете ее в файл, а затем в C # загружаете из файла в строку и передаете в FromXmlString.

...