password encrypt descargar cipher python encryption

python - encrypt - pycrypto windows



En el intercambio de claves Diffie-Hellman (3)

Olvidaste dos módulos más:

>>> 5556302616191343498765890791686005349041729624255239232159744 % 22 16L >>> 793714773254144 % 22 16

El libro que estoy leyendo explica el algoritmo de la siguiente manera:

  • 2 personas piensan en 2 números públicos de "nyg" de los que ambos son conscientes.
  • 2 personas piensan en 2 números privados "x" e "y" que guardan en secreto.

El intercambio ocurre como se ilustra

Puse el siguiente código python para ver cómo funciona esto y ... no es así. Por favor, ayúdame a entender lo que me estoy perdiendo:

#!/usr/bin/python n=22 # publicly known g=42 # publicly known x=13 # only Alice knows this y=53 # only Bob knows this aliceSends = (g**x)%n bobComputes = aliceSends**y bobSends = (g**y)%n aliceComputes = bobSends**x print "Alice sends ", aliceSends print "Bob computes ", bobComputes print "Bob sends ", bobSends print "Alice computes ", aliceComputes print "In theory both should have ", (g**(x*y))%n --- Alice sends 14 Bob computes 5556302616191343498765890791686005349041729624255239232159744 Bob sends 14 Alice computes 793714773254144 In theory both should have 16


Roman tiene razón. Sin embargo, será mejor que eche un vistazo a la función de tres argumentos de pow (). Mucho más rápido y tercer argumento es el módulo


Para dos personas

#!/usr/bin/python p=141301# publicly known g=5728435 # publicly known x=76435 # only Alice knows this y=37846 # only Bob knows this aliceSends = (g**x)%p aliceComputes = (bobSends**x)%p bobSends = (g**y)%p bobComputes = (aliceSends**y) %p bobSends = (g**y)%p bobComputes = (aliceSends**y) %p print ("Alice sends ", aliceSends ) print ("Bob computes ", bobComputes ) print ("Bob sends ", bobSends) print ("Alice computes ", aliceComputes)

Para tres o más personas

#!/usr/bin/python p=141301# publicly known g=5728435 # publicly known x=76435 # only Alice knows this y=37846 # only Bob knows this z=23# only carol knows this aliceSends = (g**x)%p bobSends = (aliceSends**y)%p carolComputes=(bobSends**z)%p bobSends2=(g**y)%p carolSends=(bobSends2**z)%p aliceComputes=(carolSends**x)%p carolSends2=(g**z)%p aliceSends2=(carolSends2**x)%p bobComputes=(aliceSends2**y)%p print ("Alice computes ga and sends it to Bob.",aliceSends) print ("Bob computes (ga)b = gab and sends it to Carol.",bobSends) print ("Carol computes (gab)c = gabc and uses it as her secret.",carolComputes) print ("Bob computes gb and sends it to Carol.",bobSends2) print ("Carol computes (gb)c = gbc and sends it to Alice.",carolSends) print ("Alice computes (gbc)a = gbca = gabc and uses it as her secret.",aliceComputes) print ("Carol computes gc and sends it to Alice.",carolSends2) print ("Alice computes (gc)a = gca and sends it to Bob.",aliceSends2) print ("Bob computes (gca)b = gcab = gabc and uses it as his secret.",bobComputes)