Le nom complet de MD5 est Message-Digest Algorithm 5. Message-Digest fait généralement référence à la transformation de hachage d'une chaîne d'octets (Message), qui consiste à transformer une chaîne d'octets de n'importe quelle longueur en un grand entier d'une certaine longueur. MD5 convertit une "chaîne d'octets" de n'importe quelle longueur en un grand entier de 128 bits, et il s'agit d'un algorithme de conversion de chaîne irréversible. En d'autres termes, même si vous voyez le programme source et la description de l'algorithme, vous ne pouvez pas convertir un MD5. reconverti en chaîne d'origine, mathématiquement parlant, car il existe une infinité de chaînes d'origine, ce qui est un peu comme une fonction mathématique qui n'a pas de fonction inverse.
Copiez le code comme suit :
importer java.security.MessageDigest ;
classe publique Test_MD5{
chaîne statique finale publique MD5 (chaîne s) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' } ;
essayer {
byte[]strTemp=s.getBytes();
//Créer un objet MessageDigest à l'aide de MD5
MessageDigestmdTemp=MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[]md=mdTemp.digest();
intj=md.longueur;
charstr[]=nouveauchar[j*2];
intk=0 ;
pour(inti=0;i<j;i++){
octetb=md[i];
//System.out.println((int)b);
//Crypter le nombre (int)b avec des doubles octets
str[k++]=hexDigits[b>>4&0xf];
str[k++]=hexDigits[b&0xf];
}
returnnewString(str);
}catch(Exception){returnnull;}
}
//test
publicstaticvoidmain(String[]args){
System.out.println("Cryptage MD5 de Caidao :/n"+Test_MD5.MD5("caidao"));
System.out.println("//www.VeVB.COm/ après le cryptage MD5 :/n"+Test_MD5.MD5("//www.VeVB.COm/"));
}
}
Une application typique de MD5 consiste à générer une empreinte digitale sur un message (chaîne d'octets) pour éviter qu'il ne soit « falsifié ». Par exemple, vous écrivez un paragraphe dans un fichier appelé readme.txt, générez une valeur MD5 pour ce readme.txt et l'enregistrez. Vous pouvez ensuite diffuser ce fichier à d'autres personnes. Si d'autres modifient le fichier, vous le trouverez. lorsque vous recalculez le MD5 de ce fichier. S'il existe une agence de certification tierce, l'utilisation de MD5 peut également empêcher la « répudiation » de l'auteur du fichier. Il s'agit de ce qu'on appelle l'application de cryptage numérique.
MD5 est également largement utilisé dans la technologie de cryptage et de décryptage. Dans de nombreux systèmes d'exploitation, le mot de passe de l'utilisateur est stocké sous la forme d'une valeur MD5 (ou d'autres algorithmes similaires). Lorsque l'utilisateur se connecte, le système calcule le mot de passe saisi par l'utilisateur. La valeur MD5 est ensuite comparée à la valeur MD5 enregistrée dans le système, et le système ne « sait » pas quel est le mot de passe de l'utilisateur.
MD5 est théoriquement un hachage unidirectionnel, et certains pirates utilisent une méthode appelée « exécution de dictionnaire » pour déchiffrer ce mot de passe. Il existe deux façons d'obtenir un dictionnaire : l'une est une collection quotidienne de tables de chaînes utilisées comme mots de passe, et l'autre est générée à l'aide d'une méthode de permutation et de combinaison. Tout d'abord, utilisez le programme MD5 pour calculer les valeurs MD5 de ces éléments du dictionnaire. , puis utilisez les valeurs MD5 de la cible sont recherchées dans ce dictionnaire.
Même si l'on suppose que la longueur maximale du mot de passe est de 8 et que le mot de passe ne peut être composé que de lettres et de chiffres, soit un total de 26+26+10=62 caractères, le nombre d'éléments dans le dictionnaire formé par la permutation est P (62,1)+P(62, 2)....+P(62,8), qui est déjà un nombre astronomique, le stockage de ce dictionnaire nécessite un groupe de disques au niveau de la To, et cette méthode a également une condition préalable, qui consiste à obtenir le compte cible. Ceci n’est possible que si le mot de passe a une valeur MD5.