En mathématiques, le 'test de primalité de Miller-Rabin' est un test de primalité probabiliste, de type Monte Carlo : étant donné un nombre entier, il donne une réponse oui/non pour conclure soit de façon certaine que celui-ci est composé, soit qu'il est probablement premier. La probabilité qu'un nombre déclaré premier par l'algorithme soit en réalité composé peut être rendue aussi faible que souhaité, en fonction des paramètres d'entrées de l'algorithme. En cela il est analogue au test de primalité de Solovay-Strassen, mais toujours plus efficace que ce dernier.
Sa version originale, due à Gary L. Miller, est déterministe, mais ce déterminisme dépend de l'hypothèse de Riemann généralisée (qui n'est pas démontrée) ; Michael Rabin l'a modifiée pour obtenir un algorithme probabiliste inconditionnel.
Le test de Miller-Rabin est très utilisé en cryptographie asymétrique pour engendrer les grands nombres premiers nécessaires pour le chiffrement RSA, et pour beaucoup des utilisations du chiffrement El Gamal ou de l'échange de clés Diffie-Hellman.
Comme les tests de primalité de Fermat ou de Solovay-Strassen, celui de Miller-Rabin tire parti d'une propriété de l'entier n, qui dépend d'un entier auxiliaire, le témoin, et qui est vraie dès que n est un nombre premier. Le principe du test est de vérifier cette propriété pour suffisamment de témoins.
Le test de Miller-Rabin étend le test de Fermat : la propriété est un raffinement du petit théorème de Fermat. Elle s'appuie sur le fait que dans un corps, ce qui est le cas de Z/pZ si p est premier, l'équation X2 = 1 n'a pour solutions que 1 et –1. Autrement dit, en termes de congruences, les seuls entiers dont le carré est congru à 1 modulo un nombre premier p sont eux-mêmes congrus à 1 ou à –1 modulo p. On déduit alors du petit théorème de Fermat que :
Proposition.— Soit p > 2 un nombre premier, soient s et d les deux entiers naturels, s non nul et d impair, vérifiant p − 1 = 2 × d (s est le nombre maximum de fois que l'on peut mettre 2 en facteur dans p − 1).