Potenciació modularEn matemàtiques, més precisament en aritmètica modular, la potenciació modular és un tipus d'elevació a la potència (potenciació) feta en mòdul un enter. Es fa servir en particular en informàtica, especialment en l'àmbit de la criptografia. Generalment, els problemes de potenciació modular prenen forma en una base donada b, un exponent e, un enter m. Es vol calcular c tal que:
Els problemes de potenciació modular similars a l'exemple precedent es consideren fàcils de resoldre, fins i tot si els nombres en joc són enormes. En canvi, calcular el logaritme discret (a partir de b, trobar les dades c, e, i m) es reconeix com a difícil. Aquest comportament de funció de direcció única fa la potenciació modular una bona candidata per a ser utilitzada en els algorismes de criptografia. Presentació generalEl càlcul ingenu de la potenciació modular és el següent: es multiplica e vegades el nombre b per ell mateix, i una vegada obtingut l'enter be, es calcula el seu residu mòdul m via l'algorisme de divisió euclidiana. Aquest mètode té dos defectes:
Les següents seccions de l'article tracten de la descripció d'aquestes diferents adaptacions, i discuteixen de la seva eficàcia en funció sobretot de la mida de les dades. Mètode directeEl mètode més directe per a calcular una potenciació modular és calcular be directament, després prendre aquest nombre mòdul m. Aplicant aquest mètode per calcular c amb b = 4, e = 13, i m = 497: Es pot fer servir una calculadora per calcular 413; això dona 67.108.864. Calculant el mòdul 497 d'aquesta quantitat (el residu de dividir-la entre 497), la resposta c és igual a 445. Fixeu-vos que b té només una longitud d'una xifra i que e té només una longitud de dues xifres, però el valor be té una longitud de 10 xifres. En criptografia, b té sovint almenys 256 xifres binàries (77 xifres decimals). Prenent b = 5 × 1076 i e = 17, els dos tenen valors perfectament raonables. En aquest exemple, b té una longitud de 77 xifres i e té una longitud de 2 xifres, però el valor de be té una longitud de 1.304 xifres decimals. Aquest gènere de càlculs són possibles sobre els ordinadors moderns, però l'absoluta enormitat d'aquest gènere de nombres alenteix considerablement la velocitat dels càlculs. Com que b i e augmenten fins i tot cada vegada més per donar una seguretat millor, el valor be es fa impracticable. El temps requerit per executar la potenciació depèn de l'entorn d'operacions i del processador. Si la potenciació s'executa com una sèrie de multiplicacions, llavors això requereix O(e) de temps per acabar-se. Mètode que estalvia memòriaUn segon mètode per calcular la potenciació modular requereix més operacions que el primer mètode. Basant-se en l'exigència menor de memòria necessària, les operacions prenen, tanmateix, menys temps que anteriorment. En resulta que aquest algorisme pot resultar més ràpid:
L'algorisme següent:
Fixeu-vos que cada pas per l'étapa 3, l'equació esdevé certa. Quan l'etapa 3 s'ha executat e cops, llavors, c conté la resposta buscada. Reprenent l'exemple b = 4, e = 13, et m = 497. L'algorisme passa per l'etapa 3 tretze cops:
La resposta final per a c és per tant 445, com en el primer mètode. Com en el primer mètode, això requereix O(e) de temps per acabar el càlcul. No obstant això, com que els nombres emprats en aquests càlculs són més petits que els nombres emprats en els càlculs del primer algorisme, el factor constant en aquest mètode tendeix a ser més petit. El mètode més eficientUn tercer mètode que redueix dràsticament tant el nombre d'operacions com l'espai en memòria requereix millorar la potenciació modular. És una combinació del mètode precedent i d'un principi més general anomenat potenciació binària (coneguda també com a potenciació per quadrat). En primer lloc, cal que l'exponent e s'expressi en notació binària. Així, e es pot escriure: En aquesta notació, la longitud de e és de n bits. ai pot prendre el valor 0 o 1 per a qualsevol i com que 0 ≤ i < n - 1. Per definició, an - 1 = 1. Llavors el valor be es pot escriure: La solució c és, per tant: Emprant aquesta idea per calcular l'exemple b = 4, e = 13, i m = 497 resulta que: Fixeu-vos que e és igual a 1101 en base dos. Com que e té una longitud de quatre xifres només calen quatre multiplicacions:
Aquí s'acaba el procés, com que exp és igual a zero el resultat és 445. Que coincideix amb el dels algorismes precedents. Per a més detalls vegeu potenciació binària. El temps d'execució d'aquest algorisme és O(log e). Quan es treballa amb grans valors de e, és força més ràpid que els dos algorismes precedents. Vegeu tambéInformation related to Potenciació modular |