0

ich den Code von http://www.java2s.com/Tutorial/Java/0490__Security/DiffieHellmanwithEllipticCurve.htmFehler beim Implementieren Diffie-Hellman mit elliptischer Kurve in Java

Hier kopiert habe, ist mein Code ..

import java.math.BigInteger; 
import java.security.KeyPair; 
import java.security.KeyPairGenerator; 
import java.security.MessageDigest; 
import java.security.SecureRandom; 
import java.security.Security; 
import java.security.spec.ECFieldFp; 
import java.security.spec.ECParameterSpec; 
import java.security.spec.ECPoint; 
import java.security.spec.EllipticCurve; 
import javax.crypto.KeyAgreement; 

     public class MainClass { 
     public static void main(String[] args) throws Exception { 
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); 

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ECDH", "BC"); 
EllipticCurve curve = new EllipticCurve(new ECFieldFp(new BigInteger(
    "fffffffffffffffffffffffffffffffeffffffffffffffff", 16)), new BigInteger(
    "fffffffffffffffffffffffffffffffefffffffffffffffc", 16), new BigInteger(
    "fffffffffffffffffffffffffffffffefffffffffffffffc", 16)); 

ECParameterSpec ecSpec = new ECParameterSpec(curve, new ECPoint(new BigInteger(
    "fffffffffffffffffffffffffffffffefffffffffffffffc", 16), new BigInteger(
    "fffffffffffffffffffffffffffffffefffffffffffffffc", 16)), new BigInteger(
    "fffffffffffffffffffffffffffffffefffffffffffffffc", 16), 1); 

keyGen.initialize(ecSpec, new SecureRandom()); 

KeyAgreement aKeyAgree = KeyAgreement.getInstance("ECDH", "BC"); 
KeyPair aPair = keyGen.generateKeyPair(); 
KeyAgreement bKeyAgree = KeyAgreement.getInstance("ECDH", "BC"); 
KeyPair bPair = keyGen.generateKeyPair(); 

aKeyAgree.init(aPair.getPrivate()); 
bKeyAgree.init(bPair.getPrivate()); 

aKeyAgree.doPhase(bPair.getPublic(), true); 
bKeyAgree.doPhase(aPair.getPublic(), true); 

MessageDigest hash = MessageDigest.getInstance("SHA1", "BC"); 

System.out.println(new String(hash.digest(aKeyAgree.generateSecret()))); 
System.out.println(new String(hash.digest(bKeyAgree.generateSecret()))); 
} 
} 

aber es gibt mir die folgende Fehlermeldung:

Exception in thread "main" java.lang.IllegalArgumentException: Invalid point 
at org.bouncycastle.math.ec.ECAlgorithms.validatePoint(Unknown Source) 
at org.bouncycastle.math.ec.AbstractECMultiplier.multiply(Unknown Source) 
at org.bouncycastle.crypto.generators.ECKeyPairGenerator.generateKeyPair(Unknown Source) 
at org.bouncycastle.jcajce.provider.asymmetric.ec.KeyPairGeneratorSpi$EC.generateKeyPair(Unknown Source) 
at MainClass.main(MainClass.java:32) 

Können Sie mir bitte helfen? Ich habe gesucht, aber ich konnte noch keine Lösung finden. Vielen Dank!

+1

Sie die bouncycastle jar ersten –

+0

hinzufügen müssen Ich habe hat das falsche Glas (jdk 1.4) hinzugefügt. Jetzt, da ich das Glas für 1.5 hinzugefügt habe, gibt es mir den gleichen Fehler – Leo

+0

Haben Sie den Code kopiert/eingefügt oder neu geschrieben? – Zymus

Antwort

Verwandte Themen