Salve a tutti sto imparando a usare BouncyCastle per la crittografia e mi trovo in difficoltà con l'applicazione dell'algoritmo di Diffie-Hellman, per lo scambio di chiavi private su connessioni non sicure.
Qui di seguito c'è la porzione di codice che riguarda Diffie-Hellman :
codice:
DHParametersGenerator DHParamGenerator = new DHParametersGenerator();
DHParamGenerator.init(1024, 80, new SecureRandom());
//Generazione dei parametri DH
AsymmetricCipherKeyPairGenerator DHGenerator=new DHKeyPairGenerator();
DHGenerator.init(new DHKeyGenerationParameters(new SecureRandom(),DHParamGenerator.generateParameters()));
AsymmetricCipherKeyPair DHKeyPair=DHGenerator.generateKeyPair();
DHBasicAgreement agreement=new DHBasicAgreement();
agreement.init(DHKeyPair.getPrivate());
agreement.calculateAgreement(DHKeyPair.getPublic());
In pratica creo un generatore di coppie di chiavi (pubblica e privata) per Diffie-Hellman e genero le chiavi. Inizializzo l'agreement con la chiave privata e calcolo il passaggio con la chiave pubblica.
calculateAgreement restituisce un valore BigInteger, quindi non restituisce una chiave che invece è di tipo byte[].
A questo punto non riesco a capire come generare la chiave privata.
Con il provider standard di java bastava fare :
secretKey=agreement.generateSecret("DES");
per ottenere la chiave privata. Ma con BouncyCastle?!?!
qualcuno sa aiutarmi?
grazie anticipatamente.
ciao ciao