Java >> Java tutorial >  >> Tag >> public

PEM til PublicKey i Android

For at besvare mit eget spørgsmål...Det første output er i hex og det andet output er i base 64. Du skal bare ændre return-sætningen til return new String(Base64.encode(encryptedBytes)); og du vil være god!


Dette besvarer ikke spørgsmålet, men jeg finder indholdet relevant. Sender som et svar, fordi det ikke passer som en kommentar.

PEM vs DER

  • PEM indkapsler grundlæggende et DER-kodet certifikat eller nøgle.
  • DER er binær, PEM er tekst; så PEM nemt kan kopieres til f.eks. en e-mail.
  • Hvad PEM gør er:
    1. Kod DER-certifikatet eller nøglen ved hjælp af Base64, og
    2. Afgræns resultatet med -----BEGIN <something>----- og -----END <something>----- .
  • Nøglen eller certifikatet er det samme, blot repræsenteret i et andet format.

Mest omskrivning fra ASN.1(wiki).

DER til Android/Java offentlig nøgle

Det følgende er et eksempel på, hvordan man bruger en nøglefabrik for at instansiere en DSA offentlig nøgle fra dens kodning. Antag, at Alice har modtaget en digital signatur fra Bob. Bob sendte hende også sin offentlige nøgle (i kodet format) for at bekræfte sin signatur. Alice udfører derefter følgende handlinger:

X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey);
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec);

...

Bemærk, at bobEncodedPubKey er DER-kodet i denne prøve.

https://developer.android.com/reference/java/security/KeyFactory

PEM til Android/Java offentlig nøgle

Svarende til hvad der gøres for DER, men gør følgende på forhånd:

  1. Fjern BEGIN /END afgrænsning, og
  2. Afkod indholdet i Base64 for at få den originale DER.

(Spørgsmålet viser allerede kode om, hvordan man gør dette.)


Java tag