document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. from sys import argv
  2.  
  3. def potmod(x, pot, mod):
  4.     bits = pot
  5.     res = 1
  6.     temp = x
  7.     while bits > 0:
  8.         if bits %2 == 1:
  9.             res = (res * temp  % mod)
  10.         temp = (temp * temp) % mod
  11.         bits = bits >> 1
  12.     return res
  13.  
  14. def bruteForce(generador, primo, F):
  15.     for i in range(primo):
  16.         valor = potmod(generador, i, primo)
  17.         if valor == F:
  18.             return i
  19.  
  20. def imprimeBruteForce(generador, primo, F):
  21.     resultado = \'\'
  22.     for i in range(primo):
  23.         valor = potmod(generador, i, primo)
  24.         if valor == F:
  25.             resultado = \'El numero utilizado es:\'+str(i)
  26.         print \'%d^%d mod %d = %d\' % (generador, i, primo, valor)
  27.         print resultado
  28.         print \'Valor de Funcion buscado: %d\' % F
  29.     return
  30.  
  31. def testGenerador(z, p):
  32.     lista = []
  33.     for i in range(1,p):
  34.         lista.append(z*i % p)
  35.     for j in range(1,p):
  36.         if lista.count(j) > 1:
  37.             return False
  38.     return True
  39.  
  40. if __name__ == "__main__":
  41.     potA = int(argv[1])
  42.     potB = int(argv[2])
  43.     generador = int(argv[3])
  44.     primo = int(argv[4])
  45.  
  46.     X = potmod(generador, potA, primo)
  47.     Ka = X**potB % primo
  48.  
  49.     Y = potmod(generador, potB, primo)
  50.     Kb = Y**potA % primo
  51.  
  52.     print \'%d mod %d primo es gnerador:\' %(generador, primo),
  53.     print testGenerador(generador, primo)
  54.  
  55.     if testGenerador(generador, primo):
  56.  
  57.         print \'El valor de la funcion para Alice es %d y el valor de K es %d\' % (X,Ka)
  58.         print \'El valor de la funcion para Bob es %d y el valor de K es %d\' % (Y,Kb)
  59.  
  60.         print \'La potencia para Alice original es %d y la potencia calculada es de %d\' % (potA, bruteForce(generador, primo, X))
  61.         print \'La potencia para Bob original es %d y la potencia calculada es de %d\' % (potB, bruteForce(generador, primo, Y))
');