salve,
ho un piccolo problema di criptografia,
ho creato una semplice Certificate authority dove creo keypair( una chiave pubblica e una privata)
e creo un file contenente la private key
codice:public void getKeyPair(){ try{ KeyPairGenerator kPGen = KeyPairGenerator.getInstance("RSA"); kPGen.initialize(1024); KeyPair kPair = kPGen.generateKeyPair(); this.privateKey = kPair.getPrivate(); this.publicKey = kPair.getPublic(); } catch(Exception e){ System.out.println(e); } }in un'altra classe dove firmerò i futuri certificati vorrei leggere il file che contiene la chiave privata della CA e me la traduca di nuovo in tipo PrivateKey, ho provato cosìcodice:public void createCAPrivateKeyFile(){ try { byte[] privateKeyFile = this.privateKey.getEncoded(); FileOutputStream certfos = new FileOutputStream("caKeyCA.csw"); Writer wr = new OutputStreamWriter(certfos, Charset.forName("UTF-8")); // wr.write("-----BEGIN RSA PRIVATE KEY-----\n"); wr.write(new sun.misc.BASE64Encoder().encode(privateKeyFile)); // wr.write("\n-----END RSA PRIVATE KEY-----\n"); wr.flush(); certfos.close(); } catch (Exception e) { e.printStackTrace(); System.out.println("da file"); }
ma mi da un errore : java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : nullcodice:public void readKeyFile (){ try { String privKeyFile = "caKeyCA.csw"; java.io.DataInputStream dis = new java.io.DataInputStream(new FileInputStream(privKeyFile)); byte[] privKeyBytes = new byte[(int)privKeyFile.length()]; dis.readFully(privKeyBytes); dis.close(); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec (new sun.misc.BASE64Decoder().decodeBuffer(privKeyBytes.toString())); this.privateKey = keyFactory.generatePrivate(privSpec); } catch(Exception e){ e.printStackTrace(); System.out.println(e); } }
allora ho provato al posto di PKCS(EncodedKeySpec, con X509EncodedKeySpec ma mi esce un altro errore :java.security.spec.InvalidKeySpecException: Only RSAPrivate(Crt)KeySpec and PKCS8EncodedKeySpec supported for RSA private keys
qualcuno sa come potrei fare???

Rispondi quotando