TEORIA DOS NÚMEROS E CRIPTOGRAFIA - 2003/04
António Machiavelo


Segunda 10/11:

Demonstração da seguinte observação, útil para encontrar raízes primitivas módulo um número primo:
g é uma raiz primitiva modulo o número primo p sse g^((p-1)/q) =/= 1 (mod p) para todo o divisor primo q de p-1.
(ver o  fim do seguinte ficheiro Maple para uma implementação desta observação).
A complexidade do algoritmo de Euclides [para calcular (a,b), sendo b=<a, o número de divisões com resto é O(log b)].
A exponenciação modular e a sua complexidade: a^e mod N pode ser calculado usando apenas O(log e) multiplicações, usando o seguinte algoritmo
INPUT: a, e, N
OUTPUT: a^e mod N
1) x:=a; y:=1; s:=e;
2) enquanto s=/=0, fazer
       b:= s mod 2
          se b=1, então y:=y*x mod N
        x:= x*x mod N
      s:= [s / 2]
3) RETURN y.

(b percorre os bits de e...
s guarda os sucessivos 'quocientes' da decomposição de e em somas de potências de 2...
x guarda as sucessivas potências de a da forma ((a^2)^2)^2...
y guarda os produtos das potências relevantes de a da forma ((a^2)^2)^2...)

Sugestão: implementar este algoritmo numa calculadora (por exemplo, a instrução "b:=s mod 2" pode ser implementada numa TI como: S-iPart(S/2)*2 STO-> S), e observar a velocidade (fenomenal!) com que calcula 367^23651 mod 98587 (por exemplo...; Obs: se ultrapassar o número de dígitos significativos com que a máquina opera, os resultados podem ser muito(!) errados por acumulação de aproximações...)

Exercício #3  (a entregar até às 24:00 de 20/11/2003, de preferência por correio electrónico):

Dar exemplo (com justificação) de:

(Pedia o favor de me enviarem o trabalho num ficheiro com o nome TNCex3[Nome].[ext], onde [Nome] é o vosso nome e [ext] depende do formato (mws, ps, pdf,...)

Quinta 13/11:

Demonstração do seguinte facto: a congruência ax = b (mod m) tem solução sse(a,m) | b; e se tiver solução, então tem (a,m) soluções distintas módulo m.
O Teorema Chinês dos Restos (TCR): versão construtiva e versão abstracta.  Relação entre o TCR e o cálculo de phi(n).