L’exponentiation modulaire — le calcul de a^b mod m — ressemble à un simple exercice d’arithmétique, mais son efficacité rend possible la cryptographie moderne à clé publique. Cette calculatrice évalue a^b mod m à l’aide de l’algorithme du carré et multiplication et en présente le fonctionnement, bit par bit.
Pourquoi ne pas calculer simplement a^b puis prendre le reste ?
Pour de petits nombres, calculer directement a^b puis réduire modulo m fonctionne bien. Mais les opérations cryptographiques utilisent des exposants et des modulos de plusieurs centaines de chiffres : a^b aurait lui-même bien plus de chiffres qu’il n’y a d’atomes dans l’univers observable, avant même d’arriver à l’étape « mod m ». La méthode du carré et multiplication évite ce problème en réduisant modulo m après chaque mise au carré et chaque multiplication ; aucune valeur intermédiaire ne dépasse donc m. Comme elle nécessite aussi environ log2(b) multiplications au lieu de b − 1, des opérations telles que le chiffrement RSA avec un exposant de 2048 bits peuvent s’effectuer en quelques millisecondes plutôt que d’être pratiquement impossibles à calculer.
Lire les onglets Étapes et Exposant binaire
L’algorithme parcourt les bits de l’exposant du plus significatif au moins significatif. À chaque bit, il élève au carré le résultat courant et le réduit modulo m ; si le bit vaut 1, il multiplie aussi par la base, puis réduit de nouveau. L’onglet Exposant binaire indique quels bits valent 1 et lesquels valent 0 : chaque bit 1 entraîne une multiplication supplémentaire, en plus de la mise au carré effectuée pour chaque bit. Même si sa valeur décimale est très grande, un exposant de 20 bits ne demande que 20 mises au carré et au plus 20 multiplications.
Limites et cas particuliers
Cette calculatrice n’accepte que des exposants non négatifs. Un exposant négatif, par exemple a^(-1) mod m, nécessite de calculer l’inverse modulaire de a. Cet inverse n’existe que si a et m sont premiers entre eux et se calcule au moyen d’un autre algorithme, celui d’Euclide étendu ; cette opération n’est pas prise en charge ici. Un modulo égal à 1 donne toujours 0, puisque tout entier est divisible par 1. Enfin, même si la base saisie est négative, elle est ramenée dans l’intervalle [0, m) avant le calcul, conformément à la convention mathématique selon laquelle a mod m est toujours non négatif.