[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [obm-l] o Livro dos Códigos




Oi,

> 
> sejam, M,E,P e Q tal que P e Q sao primos e E é primo com (P-1)*(Q-1)
> 
> entao calcule:
> (M representa a mensagem original e C a mensagem cifrada)
> C=M^E (mod P*Q)
> 
> calcule D tal que:
> E*D=1 (mod (P-1)*(Q-1))

Supondo que D foi calculado. (mais adiante eu explico como)

> 
> entao prove que:
> M=C^D (mod P*Q)
> 
> alguém poderia me ajudar a demonstrar isso ??

Pelo Teorema de Euler:

" Se a e b sao primos entre si, entao 
     a^k = a^(k mod phi(b)) (mod b)  "

Entao, como phi(P*Q) = (P-1)*(Q-1) e

C^D = M^(E*D) (mod P*Q)

entao

M^(E*D) = M (mod P*Q)


> 
> no livro ele diz que D pode ser encontrado através do Algoritmo de Euclides
> .. alguém pode me dizer como é ??
> 

O Algoritmo de Euclides serve para calcular o mdc de dois valores.

Sua forma original eh a seguinte:

funcao mdc(a,b)
  se (b = 0)
     retorne a
  senao 
     retorne mdc(b,a mod b)


Eh sabido que o mdc de dois valores eh uma combinacao linear dos mesmos.
Existe um algoritmo conhecido como o algoritmo estendido de Euclides que
retorna esta combinacao linear, ao inves de simplesmente o valor do mdc:

mdc_estendido(a,b) retorna uma tripla <d,x,y>, onde d = mdc(a,b) e
d=ax+by

* no codigo abaixo, <-- significa atribuicao de um valor a uma variavel

funcao mdc_estendido(a,b)
  se (b=0)
     retorne <a,1,0>
  fim se
  <d',x',y'> <-- mdc_estendido(b,a mod b)
  <d,x,y> <-- <d',y',x' - piso(a/b) * y'>
  retorne <d,x,y>

A prova de corretude do 2o algoritmo sai por inducao:
(supondo a corretude do algoritmo de euclides original)

A base eh trivial (b = 0)

passo:

pela hipotese temos que d' = bx' + (a mod b)y'

Como d = d' (pelo algoritmo original de Euclides)

d = bx' + (a - piso(a/b) * b)y'
  = ay' + b(x' - piso(a/b) * y')


=========
Como calcular D no RSA

> E*D=1 (mod (P-1)*(Q-1))

D eh calculado pelo algoritmo de euclides, pela invocacao

<1,D,X> <-- mdc_estendido(E,(P-1)*(Q-1))

Sabe-se que E eh primo relativo de (P-1)*(Q-1), entao mdc = 1; e para os
fins do RSA, o valor X retornado pode ser desprezado, ficando-se com o
D.

Espero ter ajudado,
Rodrigo


> muito obrigado ..
> 
> "Mathematicus nascitur, non fit"
> Matemáticos não são feitos, eles nascem
> ---------------------------------------
> Gabriel Haeser
> www.gabas.cjb.net
> 
> ------------------------------------------
> Use o melhor sistema de busca da Internet
> Radar UOL - http://www.radaruol.com.br
> 
> =========================================================================
> Instruções para entrar na lista, sair da lista e usar a lista em
> http://www.mat.puc-rio.br/~nicolau/olimp/obm-l.html
> O administrador desta lista é <nicolau@mat.puc-rio.br>
> =========================================================================
=========================================================================
Instruções para entrar na lista, sair da lista e usar a lista em
http://www.mat.puc-rio.br/~nicolau/olimp/obm-l.html
O administrador desta lista é <nicolau@mat.puc-rio.br>
=========================================================================