Copiez le code comme suit :
classe publique MD5Check {
/**
* La combinaison de chaînes de mot de passe par défaut est utilisée pour convertir les octets en caractères hexadécimaux. Apache utilise cette combinaison par défaut pour vérifier l'exactitude des fichiers téléchargés.
*/
char protégé hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a' , 'b', 'c', 'd', 'e', 'f' } ;
MessageDigest protégé messagedigest = null;
{
essayer {
messagedigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
public String getFileMD5String (fichier fichier) lance IOException {
InputStreamfis ;
fis = nouveau FileInputStream(fichier);
octet[] tampon = nouvel octet[1024];
int numRead = 0;
while ((numRead = fis.read(buffer)) > 0) {
messagedigest.update(buffer, 0, numRead);
}
fis.close();
return bufferToHex(messagedigest.digest());
}
public String getFileMD5String (InputStream in) lance IOException {
octet[] tampon = nouvel octet[1024];
int numRead = 0;
while ((numRead = in.read(buffer)) > 0) {
messagedigest.update(buffer, 0, numRead);
}
joindre();
return bufferToHex(messagedigest.digest());
}
chaîne privée bufferToHex (octet octets []) {
return bufferToHex(bytes, 0, bytes.length);
}
private String bufferToHex(byte bytes[], int m, int n) {
StringBuffer stringbuffer = new StringBuffer(2 * n);
int k = m + n ;
pour (int l = m; l < k; l++) {
appendHexPair(octets[l], stringbuffer);
}
return stringbuffer.toString();
}
private void appendHexPair (octet bt, StringBuffer stringbuffer) {
char c0 = hexDigits[(bt & 0xf0) >> 4];//Obtenir la conversion numérique des 4 bits supérieurs de l'octet
// Il s'agit d'un décalage logique vers la droite, et les bits de signe sont décalés ensemble vers la droite. Aucune différence entre les deux symboles n'est trouvée ici.
char c1 = hexDigits[bt & 0xf]; // Récupère la conversion numérique des 4 bits inférieurs de l'octet
stringbuffer.append(c0);
stringbuffer.append(c1);
}
}