Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-06-2006, 17:15   #1
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
[JAVA] Prelevare da Keystore PKCS#12 Chiave privata e file di certificato

ciao ragazzi come da titolo cerco un programma java che dato un PKCS#12 mi crea 2 nuovi file uno contenente solo la chiave privata che mi servirà dopo per firmare un messaggio e il corrispettivo certificato con la chiave pubblica in formato der.

Grazie mille
Ciao Ciao
__________________
Toshiba M40-281

Ultima modifica di ermasto : 06-06-2006 alle 19:30.
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 19:30   #2
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
nessuno mi puo aiutare
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 21:09   #3
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
KeyStore ks = KeyStore.getInstance("PKCS12");
InputStream in = new FileInputStream("x509pri.p12");
ks.load(in,null);
PrivateKey priv = (PrivateKey) ks.getKey("","");
java.security.cert.Certificate cert = ks.getCertificate("");
byte[] encodedCert = cert.getEncoded();

FileOutputStream certfos = new FileOutputStream("suecert.der");
certfos.write(encodedCert);
certfos.close();

allora ho trovato questo programmino che fa al caso mio ma ho due piccoli problemini
nel metodo ks.getkey() vuole essere passato l'alias e la password, ma il problema è che non so qual'è l'alias del mio certificato e lo stesso vale per il metodo getCertificate. c'è un modo per rimediare a ciò??

Grazie mille
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 21:56   #4
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Codice:
Enumeration aliases = ks.aliases();
while(aliases.hasMoreElements())
   System.out.println(aliases.nextElement());
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2006, 22:07   #5
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
ho provato con il tuo codice kingv ma mi torna un errore: il codice modificato è:

Quote:
package Perform;

import java.util.*;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.*;
import java.security.cert.CertificateException;

public class key {

public static void main(String args[]){



try {

KeyStore ks = KeyStore.getInstance("PKCS12");
InputStream in = new FileInputStream("e://x509pri.p12");
ks.load(in,null);
Enumeration aliases = ks.aliases();
while(aliases.hasMoreElements())
System.out.println(aliases.nextElement());
PrivateKey priv = (PrivateKey) ks.getKey("aliases","aliaseskeypass".toCharArray());
byte[] encodedKey = priv.getEncoded();

/* save the certificate in a file named "suecert" */
FileOutputStream keyfos = new FileOutputStream("suekey.der");
keyfos.write(encodedKey);
keyfos.close();
//You can extract the public key certificate from the keystore and save its encoded bytes to a file named suecert, via the following.

java.security.cert.Certificate cert = ks.getCertificate("aliases");
byte[] encodedCert = cert.getEncoded();

/* save the certificate in a file named "suecert" */
FileOutputStream certfos = new FileOutputStream("suecert.der");
certfos.write(encodedCert);
certfos.close();



} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
questo è l'errore:

Exception in thread "main" java.lang.NullPointerException
at Perform.key.main(key.java:28)

a proposito questo metodo:

Quote:
PrivateKey priv = (PrivateKey) ks.getKey("aliases","aliaseskeypass".toCharArray());
byte[] encodedKey = priv.getEncoded();

/* save the certificate in a file named "suecert" */
FileOutputStream keyfos = new FileOutputStream("suekey.der");
keyfos.write(encodedKey);
keyfos.close();

va bene per salvare in formato Pkcs#8 la chiave privata che poi posso usare per firmare i messaggi?

Grazie mille
__________________
Toshiba M40-281

Ultima modifica di ermasto : 06-06-2006 alle 22:09.
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 09:36   #6
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Codice:
package Perform;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import java.security.*;
import java.security.cert.CertificateException;

import java.util.*;


public class key
{
	public static void main(String[] args)
	{
		try
		{
			KeyStore ks = KeyStore.getInstance("PKCS12");
			InputStream in = new FileInputStream("e://x509pri.p12");
			ks.load(in, null);

			Enumeration aliases = ks.aliases();
			String alias = (String)aliases.nextElement();

			PrivateKey priv = (PrivateKey) ks.getKey(alias, "aliaseskeypass".toCharArray());
			byte[] encodedKey = priv.getEncoded();

			/* save the certificate in a file named "suecert" */
			FileOutputStream keyfos = new FileOutputStream("suekey.der");
			keyfos.write(encodedKey);
			keyfos.close();

			//You can extract the public key certificate from the keystore and save its encoded bytes to a file named suecert, via the following.
			java.security.cert.Certificate cert = ks.getCertificate(alias);
			byte[] encodedCert = cert.getEncoded();

			/* save the certificate in a file named "suecert" */
			FileOutputStream certfos = new FileOutputStream("suecert.der");
			certfos.write(encodedCert);
			certfos.close();
		}
		catch (KeyStoreException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (FileNotFoundException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (NoSuchAlgorithmException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (CertificateException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (UnrecoverableKeyException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
prova così.
di solito i p12 sono protetti da password (che può essere differente da quella della chiave). sei sicuro di quel "null" nella load?
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 09:42   #7
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da ermasto
va bene per salvare in formato Pkcs#8 la chiave privata che poi posso usare per firmare i messaggi?
dimenticavo.
sì dovrebbe essere ok. se non sei sicuro controlla col metodo getFormat() di PrivateKey
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 10:00   #8
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
io lo scarico dalla mia CA e se provo a installarlo nel browser mi chiede solo la password per la chiave privata

cmq ho provato il tuo codice e mi da quest errore

java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded
at com.sun.net.ssl.internal.ssl.PKCS12KeyStore.engineGetKey(Unknown Source)
at java.security.KeyStore.getKey(Unknown Source)
at Perform.key.main(key.java:30)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_ab.b(DashoA12275)
at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede.engineDoFinal(DashoA12275)
at javax.crypto.Cipher.doFinal(DashoA12275)
... 3 more

poi anche se tolgo la parte che si riferisce alla chiave privata e voglio solo estrarre il certificato mi da quest errore.

Exception in thread "main" java.lang.NullPointerException
at Perform.key.main(key.java:40)
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 10:09   #9
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
puo' essere che le password siano coincidenti, per questo ti viene chiesta una volta sola.

prova a mettere qui:
ks.load(in, null);

la stessa password con cui proteggi la chiave privata al posto di null.


fammi sapere.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 10:22   #10
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
Quote:
Originariamente inviato da kingv
puo' essere che le password siano coincidenti, per questo ti viene chiesta una volta sola.

prova a mettere qui:
ks.load(in, null);

la stessa password con cui proteggi la chiave privata al posto di null.


fammi sapere.
ma mi sorge un dubbio ma la password come la metto?? nel senso io ho una pass numerica di 10 caratteri ma nel programmino non la inserisco mai direttamente sempre usando "aliaseskeypass".toCharArray().

Poi ho provato a mettere in ks.load(in,"aliaseskeypass".toCharArray()) e mi caccia quest'altra eccezione

java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.net.ssl.internal.ssl.PKCS12KeyStore.engineLoad(Unknown Source)
at java.security.KeyStore.load(Unknown Source)
at Perform.key.main(key.java:24)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_ab.b(DashoA12275)
at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC2_40.engineDoFinal(DashoA12275)
at javax.crypto.Cipher.doFinal(DashoA12275)
... 3 more

cosa puo essere??

Grazie mille x l'aiuto
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2006, 10:47   #11
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
"aliaseskeypass" è la password.....
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 16:21   #12
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
niente da fare mi sa sempre lo stesso errore:

java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded
at com.sun.net.ssl.internal.ssl.PKCS12KeyStore.engineGetKey(Unknown Source)
at java.security.KeyStore.getKey(Unknown Source)
at Perform.key.main(key.java:32)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_ab.b(DashoA12275)
at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede.engineDoFinal(DashoA12275)
at javax.crypto.Cipher.doFinal(DashoA12275)1

non riesco proprio a capire da cosa è provocato
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 16:57   #13
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
allora il programma ora funziona in parte ecco il codice:

[quote]


[/package Perform;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import java.security.*;
import java.security.cert.CertificateException;

import java.util.*;


public class key
{
public static void main(String[] args)
{
try
{
KeyStore ks = KeyStore.getInstance("PKCS12");
InputStream in = new FileInputStream("e://x509pri.p12");
ks.load(in, null);

Enumeration aliases = ks.aliases();
String alias=null;
while(aliases.hasMoreElements())
{
alias = (String)aliases.nextElement();
System.out.println(alias);
}
PrivateKey priv = (PrivateKey) ks.getKey(alias, "1234567890".toCharArray());
byte[] encodedKey = priv.getEncoded();
System.out.println(priv);
/* save the certificate in a file named "suecert" */
FileOutputStream keyfos = new FileOutputStream("suekey.der");
keyfos.write(encodedKey);
keyfos.close();


//You can extract the public key certificate from the keystore and save its encoded bytes to a file named suecert, via the following.
java.security.cert.Certificate cert = ks.getCertificate(alias);
byte[] encodedCert = cert.getEncoded();
System.out.println(" Certificate : " + cert);
/* save the certificate in a file named "suecert" */
FileOutputStream certfos = new FileOutputStream("suecert.der");
certfos.write(encodedCert);
certfos.close();
}
catch (KeyStoreException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (NoSuchAlgorithmException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (CertificateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}

}
}
[quote]

infatti mi stampa la chiave e me la salva pure anche se devo vedere in che estensione salvarla, perche penso che .der non va bene sai in che formato si salvano i pkcs#8??

solo che dopo avermi fatto stampare la chiave privata mi da quest'ecezione sul metodo:
byte[] encodedCert = cert.getEncoded();

eccola qua:
Exception in thread "main" java.lang.NullPointerException
at Perform.key.main(key.java:43)

e non capisco come mai
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 18:46   #14
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
io ti rispondo ma non mi leggi...


sostituisci:
ks.load(in, null);
con:
ks.load(in, "1234567890");
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 19:01   #15
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
Quote:
Originariamente inviato da kingv
io ti rispondo ma non mi leggi...


sostituisci:
ks.load(in, null);
con:
ks.load(in, "1234567890");
hai ragione solo che quando avevo provato mi dava lo stesso gli errori e non ci avevo piu fatto caso

Scusami tanto e grazie mille per il tuo prezioso aiuto
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 20:27   #16
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da ermasto
hai ragione solo che quando avevo provato mi dava lo stesso gli errori e non ci avevo piu fatto caso

no problem stavo scherzando ovviamente

CIao
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2006, 00:52   #17
Mazza2
Senior Member
 
Iscritto dal: Jan 2002
Città: Spagna
Messaggi: 557
è proprio il topic che cercavo:

ho creato una coppia di chiavi (pubblica,privata), le vorrei salvare in maniera sicura sul pc. Qual è la combinazione migliore( + sicura ) per il salvataggio??...Le chiavi le creo cosi':
Codice:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "BC"); // 
      keyGen.initialize(512);
      KeyPair chiaviRSA = keyGen.generateKeyPair();
      PrivateKey chiavePrivata = chiaviRSA.getPrivate();
      PublicKey chiavePublica = chiaviRSA.getPublic();
Mazza2 è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2006, 10:54   #18
ermasto
Senior Member
 
L'Avatar di ermasto
 
Iscritto dal: Mar 2004
Messaggi: 581
ora un altro passo che devo fare è il seguente:

devo creare un messaggio soap e aggiungere ad esso un security token che è il certificato x509 e poi tutto questo messaggio soap lo devo firmare con la chiave privata che appartiene al certificato

Per quanto riguarda la creazione del messaggio soap non ci sono problemi ma non sono riuscito a trovare nulla su come aggiungere il token x509, ho letto in giro che devo usare wss4j ma non ho trovato una buona guida e cercare in tutte le API è uno sbattimento assurdo, che tu sappia esiste una guida o qualche sito che lo spiega meglio magari con qualche esempio??
__________________
Toshiba M40-281
ermasto è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2006, 13:20   #19
Mazza2
Senior Member
 
Iscritto dal: Jan 2002
Città: Spagna
Messaggi: 557
che differenza c'e' tra pcks 8 e 12??? se salvo la privata con pkcs 8,.,.non capisco come la salva con pcks 8,.., un aiuto pls
Mazza2 è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2006, 20:38   #20
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
ermasto> non ho mai usato wss4j anche se l'argomento mi interessa parecchio. non posso aiutarti ma se trovi dei link interessanti postali

mazza> pkcs8 è un formato per le chiavi private (neanche molto usato per quello che ho visto), pkcs12 invece è lo standard per contenere chiavi e certificati in un file (protetto da crittografia a chiave simmetrica).
kingv è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Samsung T7 2TB crolla su Amazon: SSD por...
Tutte le JBL a prezzi da non perdere su ...
PS6 e RDNA 5: la GPU sarà 'quasi ...
Meta cambia rotta sul metaverso: Horizon...
Zeekr debutta in Italia con Jameel Motor...
Robotaxi sotto controllo remoto: Waymo a...
Ubisoft continua i tagli: 40 licenziamen...
PromptSpy: il primo malware Android che ...
Navigare all'estero con costi accessibil...
Boom del fotovoltaico in Africa: +54% in...
Cisco mette l'IA agentica al centro con ...
Volete una microSD da 400GB SanDisk a me...
Artemis II: il razzo spaziale NASA SLS e...
A volte basta poco: via muffa e umidit&a...
4 portatili con 32GB di RAM e 1TB di SSD...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v