Forum Programmation.java chèvre, je deviens chèvre

Posté par  (site web personnel) .
Étiquettes : aucune
-1
6
nov.
2007
salut,

feu tribune, paix à son âme ...

Bon, maintenant, on attaque directement mon problème Java

J'ai un code bordélique et non commenté qui a fonctionné à un moment. Maintenant, il ne fonctionne plus et tout le monde jure qu'il n'a pas touché à ce code et il ne fait pas parti des codes sont environnement de gestion de version. En clair, je suis dans la merde jusqu'au cou et j'ai besoin d'aide.

D'après ce que j'ai compris du fonctionnement de la chose :
1) Démarrage de l'application Web avec une génération du pair de clé Diffie-Hellman. La clé public est stockée en base de données.
2) Chiffrement des données par une application extérieur en se basant sur la clé publique présente en base. La clé publique de l'application de chiffrement est stockée en base.
3) Activation de l'application Web
et là, ça coince. J'obtiens cette erreur
java.security.InvalidKeyException: Incompatible parameters
at com.sun.crypto.provider.DHKeyAgreement.engineDoPhase(DashoA6275)
at javax.crypto.KeyAgreement.doPhase(DashoA12275)
at com.modelys.security.cryptography.Cryptographer.importKey(com/modelys/security/cryptography/Cryptographer)
at rcb.rcbic.Application$2.run(Application.java:1384)

Je ne peux pas fournir l'intégralité du code source mais seulement des bouts.
1)
KeyPair keyPair = null;
try {
AlgorithmParameterGenerator parameterGenerator = AlgorithmParameterGenerator
.getInstance("DH");
parameterGenerator.init(512);
KeyPairGenerator keyPairGenerator = KeyPairGenerator
.getInstance("DH");
keyPairGenerator
.initialize((DHParameterSpec) parameterGenerator
.generateParameters().getParameterSpec(
DHParameterSpec.class));
keyPair = keyPairGenerator.generateKeyPair();
} catch (Exception ignored) {
Log.out.print(Log.TYPE_ERROR, VERSION, Application.class,
"start()", "generating key pair", ignored);
}


2)
PublicKey internalKey = null;
try
{
internalKey =
KeyFactory.getInstance("DH").generatePublic(
new X509EncodedKeySpec(Cryptographer.hexToBytes(key)));
} catch (Exception exception)
{
this.exit("decoding application public key", exception);
}
try
{
resultSet.close();
} catch (SQLException ignored)
{
}

Log.out.print(Log.TYPE_INFO, this.getVersion(), "Initializing encrypter...");
encrypter = new Encrypter("DESede");
Log.out.print(Log.TYPE_INFO, this.getVersion(), " Generating keys...");
KeyPair keyPair = null;
try
{
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DH");
keyPairGenerator.initialize(((DHPublicKey) internalKey).getParams());
keyPair = encrypter.generateKey("DH", internalKey, keyPairGenerator);
} catch (Exception exception)
{
this.exit("generating keys", exception);
}


3)
if (resultSet.next()) {
Log.out.print(Log.TYPE_INFO, VERSION, "new Encrypter... " + Protocol.ALGORITHM_NAME_ENCRYPTION);
encrypter = new Encrypter("DESede");
PublicKey publicKey = KeyFactory.getInstance( "DH").generatePublic(new X509EncodedKeySpec(Cryptographer.hexToBytes(resultSet.getString(1).trim())));
encrypter.importKey(
"DH",
publicKey,
keyPair.getPrivate());
}


J'espère que ça vous permettra de m'aider.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.