Bonjour,
Je cherche à signer un message avec BouncyCastle (version 1.39) et l'algorithme ECDSA. Dans un premier temps, je dois générer des clefs dont la taille doit faire 192 bits. J'utilise donc la courbe prédéfinie prime192v1. Cependant, les tailles des clefs publique et privée générées font respectivement 75 et 59 octets au lieu des 192 bits (donc 24 octets) attendus
Le "192" dans le nom de la courbe prime192v1 ne correspondrait pas à la taille de la clef qu'on souhaite générée ? Dans ce cas, comment indiquer au générateur qu'on souhaite obtenir une clef de 192 octets ?
Vous trouverez le code ci-dessous (Java 6).
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class ECDSAKeyPairTest { private static KeyPair generateKeyPair(String curve) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException { KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ECDSA", "BC"); ECGenParameterSpec ecSpec = new ECGenParameterSpec(curve); keyGen.initialize(ecSpec, new SecureRandom()); KeyPair keyPair = keyGen.generateKeyPair(); return keyPair; } private static void displayKeyPair(KeyPair keyPair) throws Exception { System.out.printf("Taille de la clef publique %d octets%n", keyPair .getPublic().getEncoded().length); System.out.printf("Taille de la clef privée %d octets%n", keyPair .getPrivate().getEncoded().length); } public static void main(String[] args) { try { Security.addProvider(new BouncyCastleProvider()); String curve = "prime192v1"; KeyPair keyPair = generateKeyPair(curve); displayKeyPair(keyPair); } catch (Exception e) { e.printStackTrace(); } } }
Partager