Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako napraviti PublicKey od niza bajtova

[es] :: Java :: Kako napraviti PublicKey od niza bajtova

[ Pregleda: 2984 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Toxter
NS

Član broj: 39393
Poruke: 317
*.ftn.ns.ac.yu.



+6 Profil

icon Kako napraviti PublicKey od niza bajtova24.08.2005. u 22:32 - pre 226 meseci
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).
Sad mu nije nista, ubio si ga k'o zeca...
 
Odgovor na temu

djuzoran
Zoran Djuric
Beograd

Član broj: 4611
Poruke: 69

Sajt: www.djuric.org


+1 Profil

icon Re: Kako napraviti PublicKey od niza bajtova25.08.2005. u 08:00 - pre 226 meseci
... 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();
}
}

Sačuvaj me bože ravnodušnih ljudi.
 
Odgovor na temu

Toxter
NS

Član broj: 39393
Poruke: 317
*.ftn.ns.ac.yu.



+6 Profil

icon Re: Kako napraviti PublicKey od niza bajtova25.08.2005. u 12:01 - pre 226 meseci
@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};



[Ovu poruku je menjao Toxter dana 25.08.2005. u 13:05 GMT+1]
Sad mu nije nista, ubio si ga k'o zeca...
 
Odgovor na temu

Toxter
NS

Član broj: 39393
Poruke: 317
*.ftn.ns.ac.yu.



+6 Profil

icon Re: Kako napraviti PublicKey od niza bajtova26.08.2005. u 13:02 - pre 226 meseci
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!
Sad mu nije nista, ubio si ga k'o zeca...
 
Odgovor na temu

[es] :: Java :: Kako napraviti PublicKey od niza bajtova

[ Pregleda: 2984 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.