Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Java

1 réponse
Avatar
Roumegou Eric
Bonjour,
on va se connecter à un de mes sites par une url avec des paramètres
cryptés.

On me fournit donc un fichier .java qui contient le code des fonctions
d'encodage et de verif mais faisant une allergie terrible au java, je
ne me sens pas de convertir ça en Wlangage.

Mes questions sont :
Puis je utiliser ce code en natif ?
si oui comment avoir un .class à partir de ce .java (javacharge) ?
Ou mettre ce fichier (dans le _WEB)?

Sinon, y'aurait-il une bonne âme pour me convertir ce code en wlangage
?

Merci de vos réponses.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)

1 réponse

Avatar
Roumegou Eric
Roumegou Eric avait soumis l'idée :
Bonjour,
on va se connecter à un de mes sites par une url avec des paramètres cryptés.

On me fournit donc un fichier .java qui contient le code des fonctions
d'encodage et de verif mais faisant une allergie terrible au java, je ne me
sens pas de convertir ça en Wlangage.

Mes questions sont :
Puis je utiliser ce code en natif ?
si oui comment avoir un .class à partir de ce .java (javacharge) ?
Ou mettre ce fichier (dans le _WEB)?

Sinon, y'aurait-il une bonne âme pour me convertir ce code en wlangage ?

Merci de vos réponses.



J'espère que vous allez pouvoir m'aider. Je teste d'abord sous WD11 ce
qui est quand mème plus facile.

J'ai récupéré un fichier .java avec les fonctions (voir fin msg).
j'ai téléchargé un jdk, puis fait un javac de ce.java pour obtenir un
.class
j'ai copié le .class UrlEncoderHelper.class dans le rep Exe

dans une fenêtre test, je fais en init de la fenetre
javaCharge(fRepExe)
cela me retourne Vrai. Jusque là on peut penser que c'est bon non ?

dans mon bouton
CRYPT_OUT=JavaExecuteFonction("UrlEncoderHelper","checkClientAllowed",javaChaîne,CRYPT_IN)

et là ça plante en me disant qu'il ne trouve pas la classe Java
UrlEncoderHelper.

Alors j'ai vu l'histoire du package, et j'ai réessayé avec
CRYPT_OUT=JavaExecuteFonction("com.monclient.report.helper/UrlEncoderHelper","checkClientAllowed",javaChaîne,CRYPT_IN)

Mais avec la mème erreur.
Difficile de savoir ce qui se passe ??
Est-ce le
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
que je n'ais pas et qui plante le .class ? Pourtant je n'ais pas
d'erreur à la compil (javac) et cela doit faire partie du jdk ça non ?
Est ce que ce n'est pas la bonne syntaxe ?

Merci de votre aide


======================================================== package com.monclient.report.helper;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public class UrlEncoderHelper
{
private final static byte[] SECRET_KEY = "c1secret".getBytes();

private static byte[] getKeyedDigest(byte[] buffer, byte[] key)
{
try
{
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(buffer);
return md5.digest(key);
}
catch (NoSuchAlgorithmException e) {}

return null;
}

/**
* Convert a byte[] array to readable string format. This makes the
"hex" readable!
* @return result String buffer in String format
* @param in byte[] buffer to convert to string format
*/
private static String byteArrayToHexString(byte in[])
{
byte ch = 0x00;
int i = 0;
if (in == null || in.length <= 0)
return null;

String pseudo[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "A", "B", "C", "D", "E", "F"};
StringBuffer out = new StringBuffer(in.length * 2);

while (i < in.length)
{
ch = (byte) (in[i] & 0xF0); // Strip off high nibble
ch = (byte) (ch >>> 4);
// shift the bits down
ch = (byte) (ch & 0x0F);
// must do this is high order bit is on!
out.append(pseudo[ (int) ch]); // convert the nibble to a
String Character
ch = (byte) (in[i] & 0x0F); // Strip off low nibble
out.append(pseudo[ (int) ch]); // convert the nibble to a
String Character
i++;
}
String rslt = new String(out);
return rslt;
}

public static String checkClientAllowed(String encodedNumClient)
{
String numClient = null;

if (encodedNumClient.length()<2)
return null;

String sig = encodedNumClient.substring(0, 32);
numClient = Integer.parseInt (encodedNumClient.substring(32),
16)+"";

if (!byteArrayToHexString(getKeyedDigest(numClient.getBytes(),
SECRET_KEY)).toUpperCase().equals(sig.toUpperCase()))
return null;
else
return numClient;
}
}

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)