document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. import random
  2. from math import sqrt,erfc
  3.  
  4. def generarClave(cantidadClaves,cantidadLetras,lista,diccionario_numeros):
  5.     diccionario_letras={}
  6.     texto_encriptado=[]
  7.     texto_descifrado=[]
  8.     for contador,x in enumerate(lista):
  9.         diccionario_letras[x]=contador
  10.     numero=0
  11.     alice=open("alice.txt","w")
  12.     bob=open("bob.txt","w")
  13.     for x in range(cantidadClaves):
  14.         for i in range(cantidadLetras):
  15.             numero=(diccionario_numeros[random.choice(range(29))])
  16.             binario=Binario(diccionario_letras[numero])
  17.             alice.write(binario)
  18.             bob.write(binario)
  19.         alice.write("\\n")
  20.         bob.write("\\n")
  21.     alice.close()
  22.     bob.close()
  23.     calcularN()
  24.  
  25. def Binario(x):
  26.     y=bin(x)[2:].zfill(8)
  27.     return y
  28.  
  29. def calcularN():
  30.     clave=open("alice.txt","r")
  31.     lineas=clave.readlines()
  32.     lista=("").join(lineas)
  33.     print "\\n Claves Generadas: \\n",lista
  34.     n=0
  35.     s=[]
  36.     for i in lista:
  37.         if i != "\\n":
  38.             i=int(i)
  39.             if i==0:
  40.                 s.append(-1)
  41.             elif i==1:
  42.                 s.append(1)
  43.             n+=1
  44.     print "N= ",n
  45.     calcularSOBS(n,sum(s))
  46.  
  47. def calcularSOBS(n,s):
  48.     print "S= ",s
  49.     sobs=abs(s/sqrt(n))
  50.     print "sobs= ",sobs
  51.     calcularPVALUE(sobs)
  52.  
  53. def calcularPVALUE(sobs):
  54.     Pvalue=erfc(sobs/sqrt(2))
  55.     print "PVALUE= ",Pvalue
  56.     if Pvalue>=0.01:
  57.         print "Por lo tanto es random"
  58.     else:
  59.         print "Por lo tanto no es random"
  60.      
  61. def main():
  62.     cantidadClaves=int(raw_input("cuantos mensajes deseas enviar? \\n"))
  63.     cantidadCaracteres=int(raw_input("de cuantos caracteres aproximadamente sera el mensaje mas largo? \\n"))
  64.     c = "abcdefghijklmnopqrstuvwxyz_ .,"
  65.     lista=("").join(c)
  66.     #diccionario que tiene como clave un numero y como valor una letra
  67.     diccionario_numeros={}
  68.     for contador,x in enumerate(lista):
  69.         #empezamos a agregar la clave: numero y el valor:letra al diccionario                                  
  70.         diccionario_numeros[contador]=x
  71.     generarClave(cantidadClaves,cantidadCaracteres,lista,diccionario_numeros)
  72.    
  73. main()
');