[java] Hoe (DSA) PrivateKey uit bestand lezen?

Pagina: 1
Acties:

  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 22-03 10:40
Ik heb het volgende programma dat een keypair genereert, de private key in een bestand stopt en er weer uithaalt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
KeyPairGenerator keygen = KeyPairGenerator.getInstance("DSA");
keygen.initialize(512);

KeyPair keypair = keygen.generateKeyPair();
        
FileOutputStream out = new FileOutputStream("mykey");
out.write(keypair.getPrivate().getEncoded());
out.close();

FileInputStream in = new FileInputStream("mykey");
byte[] encodedKey = new byte[in.available()];
in.read(encodedKey);
in.close();
        
X509EncodedKeySpec privateKey = new X509EncodedKeySpec(encodedKey);
KeyFactory kf = KeyFactory.getInstance("DSA");
PrivateKey privk = kf.generatePrivate(privateKey);

Hierop krijg ik de exception:
code:
1
2
3
4
5
java.security.spec.InvalidKeySpecException: Inappropriate key specification
    at sun.security.provider.DSAKeyFactory.engineGeneratePrivate(Unknown Source)
    at java.security.KeyFactory.generatePrivate(Unknown Source)
    at Test.main(Test.java:43)
Exception in thread "main"


Deze exception krijg ik niet als ik hetzelfde met een public key doe. Wat doe ik fout?