In qualche modo m è una radice, non quadrata, ma "settima" di 2187..... Certo m8 = 6561 sarebbe stato più facile perchè m8 =(m4 )2, quindi m4 è la radice quadrata di 6561 cioè 81, poi m4 =(m2 )2, quindi m2 è la radice quadrata di 81, cioè 9 e finalmente m=3.
Teoricamente la risposta è facile. La funzione esponenziale, expm , è la funzione che al numero a associa ma (expm(a)= ma). La funzione inversa è il logaritmo logm(expm(a))=logm(ma) = a . Quindi m è quel numero tale che logm(2187)=7.
(Questo non ci aiuta molto a calcolare m ma serve a spiegare la terminologia successiva)
Nell'esempio: 37=2187 e se avete una piccola calcolatrice tascabile potete verificare che log3(2187) = ln(2187)/ln(3) = 7 (qui ln(x) indica il logaritmo "usuale", quello appunto che si trova sulle calcolatrici tascabili e che, forse, conoscete già).
FATTO 1: Il fatto è che conoscendo b e a è comunque difficile (anche con un computer se i numeri sono abbastanza grandi) ricavare m dall'espressione b = ma (questo si chiama il problema del "logaritmo inverso").
La cosa però non deve essere completamente impossibile, altrimenti il ricevente non riuscirà a decifrare il messaggio...
Infatti c'è una situazione nella quale, con una piccola informazione supplementare (la chiave privata) si riesce a calcolare il logaritmo. Per questo però bisogna usare le congruenze (o "numeri dell'orologio") e i numeri primi. In caso di bisogno potete consultare il link congruenze (o "numeri dell'orologio")e il link numeri primi.
Siano adesso p e q due numeri primi molto grandi e poniamo n = pq.
Il problema diventa: sia b = ma (mod n), conoscendo b e a, determinare m (possiamo assumere m < n)
C'è una circonstanza in cui questo è fattibile ed è quando a non ha divisori comuni (tranne 1) con p-1 e con q-1 (si indica questa situazione con (a, p-1)=1=(a, q-1) e si dice che a e p-1 (risp. a e q-1) sono primi tra di loro)
In questo caso si procede così:
Si trova d tale che ad = 1 (mod p-1) e ad = 1 (mod q-1) (questo si fa facilmente)
Si calcola bd, viene bd= m (mod n) e abbiamo trovato m
Chi è curioso di vedere perchè bd= m (mod n) può cliccare qui.
Adesso abbiamo tutto quello che ci serve...