Sowohl die Ver- als auch die Entschlüsselung bei RSA müssen
modular potenzieren, also xc mod n
berechnen. Das kann in c-1 modulo-Multiplikationen geschehen,
ist aber sehr ineffizient, wenn c groß ist.
Der "square-and-multiply"-Algorithmus reduziert die Anzahl der
modulo-Multiplikationen auf höchstens 2l, wobei l die
Anzahl der Bits der Binärdarstellung von c ist.
Da l <= k, kann xc mod n in O(k3) berechnet werden.
Somit können bei RSA Ver- und Entschlüsselung in Polynomzeit geschehen.
Wenn also b als bl-1...b1b0
vorliegt (d.h. wertniedrigstes Bit rechts), lautet der square-and-multiply-Algorithmus zur Berechnung von z = xb
mod n: