L'authentification des messages joue un rôle important dans l'authentification de l'identité et constitue un élément important du système d'authentification. Elle est largement utilisée dans les systèmes financiers et commerciaux.
Le code d'authentification du message (Message Authentication Code ou MAC) est couramment utilisé comme base d'authentification.
Le principe de base est le suivant : utiliser une clé (clé privée) pour générer un petit bloc de données et l'ajouter au message à transmettre. Cette technologie suppose que les deux interlocuteurs partagent une clé K. Lorsqu'un interlocuteur souhaite transmettre des données M à l'autre, le MAC du message M est calculé grâce à un algorithme spécifique = F (K, M), où F fait référence à la fonction d'opération d'authentification, puis les données de message M et MAC sont envoyées ensemble à l'autre partie. Lorsque l'autre partie reçoit les données, elle utilise d'abord le même algorithme F pour calculer le MAC et le compare avec le MAC transmis. Si c'est le même, les données sont considérées comme correctes. La fonction d'authentification est souvent considérée comme un type d'algorithme de chiffrement, mais la différence est qu'elle n'est pas utilisée pour des opérations inverses et présente un certain degré de sécurité. Habituellement, différents systèmes d'application utilisent leurs propres fonctions d'authentification spécifiques, ce qui garantit dans une certaine mesure la sécurité des données.
À partir de j2sdk1.4, Java fournit une authentification des messages de classe javax.crypto.Mac.
afficher la copie ordinaire dans le presse-papiers ?
byte[] macData = "ceci est un test Mac".getBytes(); // obtient une instance de Mac, en utilisant l'algorithme HmacMD5
Mac mac = Mac.getInstance("HmacMD5"); //initialise le IV de l'algorithme, 8 octets peuvent être lus à partir du fichier.
octet[] ivInitKey = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 };
IvParameterSpec spec = new IvParameterSpec(ivInitKey); // les octets de la clé secrète de la validation Mac, peuvent également être lus à partir du fichier
byte[] keyBytes = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f } ; //génère l'objet clé secret en utilisant des octets secrets et Algorithme DESede
Clé SecretKey = new SecretKeySpec(keyBytes, "DESede"); // init Mac mac.init(key, spec);
octet[] macCode = mac.doFinal(macData);
byte[] macData = "ceci est un test Mac".getBytes(); // obtient une instance de Mac, en utilisant l'algorithme HmacMD5
Mac mac = Mac.getInstance("HmacMD5"); //initialise le IV de l'algorithme, 8 octets peuvent être lus à partir du fichier.
octet[] ivInitKey = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 };
IvParameterSpec spec = new IvParameterSpec(ivInitKey); // les octets de la clé secrète de la validation Mac, peuvent également être lus à partir du fichier
byte[] keyBytes = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f } ; //génère l'objet clé secret en utilisant des octets secrets et Algorithme DESede
Clé SecretKey = new SecretKeySpec(keyBytes, "DESede"); // init Mac mac.init(key, spec);
octet[] macCode = mac.doFinal(macData);
macCode est le Mac généré, et le même Mac peut être généré avec la même clé.
Tant que les parties communicantes s'assurent qu'elles utilisent la même clé, elles peuvent garantir qu'elles disposent du même Mac pour atteindre l'objectif de vérification des messages.
Il semble que ce soit le même principe que la somme de contrôle couramment utilisée sur Internet.
-