Java [Help] Problème création nouvelle clé: "invalid key format"

Inscrit
6 Avril 2015
Messages
1
Reactions
0
#1
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.fr/index.php?threads/public-key-et-message-d'authentification.1199/ 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.

Code:
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,
 
A

Anonymous

Invité
#2
Re: [Help] Problème création nouvelle clé: "invalid key form

Salut, je sais que le post date, mais ca peut toujours être utile:
L'implémentation utilisé par Cipher est "RSA/ECB/PKCS1Padding".
 
A

Anonymous

Invité
#4
Re: [Help] Problème création nouvelle clé: "invalid key form

Merci alexandre, mais nous, les développeurs Java, on a accès à une librairie complète de cryptographie distribué par notre Oracle. :p
Ou presque... faut juste passer la restriction (un peu absurde) des clés AES de 128 bits avec:
Code:
Field field = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted");
field.setAccessible(true);
field.setBoolean(null, false);
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#5
Re: [Help] Problème création nouvelle clé: "invalid key form

Exact mais c'est bien d'avoir un aperçu de la librairie officielle utilisé par Ankama ;)
En .NET aussi je te rassure nous avons une librairie crypto :D
 
Haut Bas