Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 3.785 pregleda

Najnovija ↓

Kako napraviti PublicKey od niza bajtova 24.08.2005. u 23:32 · pre 258 meseci #1
Kao sto vidite u naslovu.
Zna li neko kako da napravim PublicKey (ili Key pa bih ga cast-ovao) od
niza bajtova koji pretstavljaju public key modulus?
(takodje imam i exponent u formi niza bajtova ako je potrebno).
Potpis
Sad mu nije nista, ubio si ga k'o zeca...
Re: Kako napraviti PublicKey od niza bajtova 25.08.2005. u 09:00 · pre 258 meseci #2
... mislim da ti ovo resava stvar...

X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(readFromFile(pubFilePath));
KeyFactory keyFact = KeyFactory.getInstance(keyPairType);
publicKey = keyFact.generatePublic(x509KeySpec);



public static byte[] readFromFile(String filePath) throws Throwable {
FileInputStream in = null;
ByteArrayOutputStream bout = null;
try {
bout = new ByteArrayOutputStream();
in = new FileInputStream(filePath);
int c;
while ((c = in.read()) != -1)
bout.write(c);
return bout.toByteArray();
} finally {
in.close();
bout.close();
}
}
Potpis
Sačuvaj me bože ravnodušnih ljudi.
Re: Kako napraviti PublicKey od niza bajtova 25.08.2005. u 13:01 · pre 258 meseci
izmenjeno 1 put, poslednji put Toxter 25.08.2005. u 13:05
  1. Toxter25.08.2005. u 13:05zapis iz teksta poruke
#3
@djuzoran:
To ne radi pokusao sam i ja to pre nego sto sam postavio ovde pitanje.
Evo koje exception-e dobijam kada to primenim:
Code:
java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: DerInputStream.getLength(): lengthTag=48, too big.
    at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:163)
    at java.security.KeyFactory.generatePublic(KeyFactory.java:284)
    at paket1.Tessssttt.main(Tessssttt.java:159)
Caused by: java.security.InvalidKeyException: IOException: DerInputStream.getLength(): lengthTag=48, too big.
    at sun.security.x509.X509Key.decode(X509Key.java:380)
    at sun.security.x509.X509Key.decode(X509Key.java:386)
    at sun.security.rsa.RSAPublicKeyImpl.<init>(RSAPublicKeyImpl.java:65)
    at sun.security.rsa.RSAKeyFactory.generatePublic(RSAKeyFactory.java:256)
    at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:159)
    ... 2 more


Da pojasnim. Niz je od 128 bajtova (1024bitni kljuc) koji pretstavljaju RSA PublicKey modulus(ako treba mogu da ga paste-ujem ali to je jednostavno byte[] koji ima 128 elemenata).
PublicKey exponent je drugi niz bajtova. Evo primer kako izgleda exponent:
Code:
byte[] exp = {(byte)0x01, (byte)0x00, (byte)0x01};
Potpis
Sad mu nije nista, ubio si ga k'o zeca...
Re: Kako napraviti PublicKey od niza bajtova 26.08.2005. u 14:02 · pre 258 meseci #4
Resio sam problem.
Evo kod ako nekome nekad zatreba:
Code:

      KeyFactory kfac = KeyFactory.getInstance("RSA");
      BigInteger modulus = new BigInteger(bPubKey);
      BigInteger exponent = new BigInteger(bExp);
           
      RSAPublicKeySpec kspec1 = new RSAPublicKeySpec(modulus, exponent);
      PublicKey pk = kfac.generatePublic(kspec1);


Pozdrav!
Potpis
Sad mu nije nista, ubio si ga k'o zeca...
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme