RSA legge PublicKey [c#]


Answers

In Java, publicKey da PublicKey a RSAPublicKey .

Che ha getModulus e getExponent ti BigIntegers , da cui utilizzerai toByteArray per ottenere i byte.

Non so che Java continui a tenere gli 0 nella classe BigInteger , quindi controlla se devi BigInteger byte null (0x00) dall'esponente pubblico.

Codifica gli array di byte nella base 64 utilizzando Apache Commons Codec o Java 8's Base64 Encoder .

Potrebbe essere necessario controllare l'ordine dei byte (magari invertire il modulo, non è sicuro).

Serializzate questi costruendo questo XML: "<RSAKeyValue><Modulus> {il vostro modulo pubblico codificato 64 di base qui} </Modulus><Exponent> {il vostro esponente pubblico codificato 64 di base qui} </Exponent></RSAKeyValue>" .

In CSharp:

var rsaCsp = new RSACryptoServiceProvider(o.BitLength);
rsaCsp.FromXmlString(xmlRsaKeyValue);

Ora hai un CSP RSA caricato con la tua chiave pubblica.

Lo stesso processo può essere esteso per caricare una chiave privata aggiungendo elementi P, Q, DP, DQ e InverseQ XML.

Question

Ho una chiave pubblica generata usando java con algoritmo RSA e in grado di ricostruire usando il seguente codice:

X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(arrBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
publicKey = keyFactory.generatePublic(pubKeySpec);

DOMANDA Come costruire PublicKey sul lato dotnet usando csharp?

la chiave pubblica di esempio sarebbe :, Nel codice sopra passo i dati contenuti nell'elemento codificato

    <sun.security.rsa.RSAPublicKeyImpl resolves-to="java.security.KeyRep">
    <type>PUBLIC</type>
    <algorithm>RSA</algorithm>
    <format>X.509</format>
    <encoded>MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMf54mcK3EYJn9tT9BhRoTX+8AkqojIyeSfog9ncYEye
0VXyBULGg2lAQsDRt8lZsvPioORZW7eB6IKawshoWUsCAwEAAQ==</encoded>
    </sun.security.rsa.RSAPublicKeyImpl>