Bonjour,
Il faut une première fois à tout, j'essaye d'écrire mon premier bot socket et comme beaucoup de débutants visiblement, je bloque sur ces fameux packets 3 et 4.
Bon donc visiblement mon DataReader est ok, j'arrive à récupérer mon packet 3 correctement le salt fait 32 bytes et la clé que je récupère fait 305 bytes.
Le problème vient au moment de l'encryption des credentials, je me suis basé sur le message de Moonlight-Angel sur ce topic https://cadernis.com/d/1199-public-key-et-message-d'authentification pour récupérer la nouvelle clé mais je n'y arrive pas et je ne comprends pas où est l'erreur et si je fais les chose correctement, j'obtiens une exception de type invalid key format.
private static String clientKey="MIIBUzANBgkqhkiG9w0BAQEFAAOCAUAAMIIBOwKCATIAq8EYkkGCUg86Bf2CHaM1z1Q2ahQgVXkx"
+ "49I0igwTVCIqG86jsgNb22na1DThZ+IP7DfyBszIecVSP8nwbYPbx6Z7dwq4pnMVx/lx5lyMZUO1"
+ "n/HGEkw1S06AlfXzSg58ci5DL9RJ9ZIa1oMDKtrZiNYA5C3L+7NSCVp/2H/yypWkDjzkFan65+TN"
+ "RExo/2O3+MytJtQ/BXVkbYD58+iiZegddNTNGvz8WlPz2cZvPQt4x1TN+KOgJRKZH5imNAxCtRg6"
+ "l1OLVxfwwUjKFgM4uAsto8vJv5DUFZQMO1Sh9gMpmzeMwXIF4fDD4O1TNiVmu3ABybt2Y4EdaQhs"
+ "/ponC0SNcWbrY0stYbX+Wpk9/Hcxmo3zoduf1ZAdGM01E1g3IjQMd0gOP4v1KQtBjoHim2MCAwEA"
+ "AQ==";
public static PublicKey getFreshKey(byte[] key){
//création de la clé publique
X509EncodedKeySpec spec = new X509EncodedKeySpec(Base64.decodeBase64(clientKey));
PublicKey publicKey =KeyFactory.getInstance("RSA").generatePublic(spec);
//on déchiffre la clé reçue à l'aide de la clé du client
Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, publicKey);
byte[] cipherData = cipher.doFinal(key);
X509EncodedKeySpec spec2 = new X509EncodedKeySpec(cipherData);
//invalid key format
PublicKey freshPublicKey =KeyFactory.getInstance("RSA").generatePublic(spec2);
return freshPublicKey;
}
Voilà pour mon premier message et ma première question qui je l'espère n'est pas si bête.
Bonne journée, Immortal,