jueves, 20 de septiembre de 2012

RSA- Firmas digitales

Para la tarea de esta semana trabaje con lo que es autenticacion desde un web service.






Este es el codigo que utilice:

*************
*************

Al final tuve un error ya que no pude hacer que me identificara al usuario correcto y siempre me marcaba que no era la persona de la que estaba ingresando los datos no era.. :( 

jueves, 13 de septiembre de 2012

RSA

En esta semana trabajamos con algoritmos de clave publica.
La tarea de esta semana era elaborar un cliente-servidor  y un generador de llaves rsa.

El codigo que utilice para generar mis llaves rsa es el siguiente
...
estas son algunas de las claves que me genero:



 este es el codigo que utilice para elaborar el socket

Servidor

import random
import socket
def get_pass(usuario):
file = open('llave_p.txt','r')
for line in archivo.readlines():
if len(line) == 0:
continue
lin = line.split()
if lin[0] == usuario:
datos = [int(lin[1],int(lin[2]))]
return e,n
else:
line += 1
file.close()
return False
def funcion(x):
return(x*x) #MUAJAJAJAJA!! :D
def main():
# Se prepara el servidor
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("", 8002))
server.listen(1)
print "Esperando clientes..."
# atender clientes
while 1:
# Se espera a un cliente
socket_cliente, datos_cliente = server.accept()
# Se escribe su informacion
print "conectado "+str(datos_cliente)
x=randinit(1,1000)
socket_cliente.send(str(x))
usuario = socket_cliente.recv(1000)
seguir = True
seguir = True
while seguir:
peticion = socket_cliente.recv(1000)
if datos == False:
print 'mentiras'
server.close()
socket_cliente.close()
e=datos[0]
n = datos[1]
y = (int(peticion)**e)%n
if funcion(x) == y:
socket_cliente.send('holi')
else:
socket_cliente.send('fallo!!! D:')
socket_cliente.close()
main()
view raw server.py hosted with ❤ by GitHub
..

Cliente

import socket
import time
from random import randint
def get_pass(usuario):
file = open(usuario+'llave_p.txt','r')
for line in archivo.readlines():
if lin(line) == 0:
continue
lin = line.split()
if lin[0] == usuario:
datos = [int(lin[1]),int(lin[2])]
return datos
else:
line += 1
file.close()
return False
def funcion(x):
return(x*x)
def main():
# conexion
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Soy un cliente!!'
s.connect(("localhost", 8001))
x=s.recv(1024)
print 'x'
rx=int(x)
y=funcion(rx)
usuario = raw_input("Usuario: ")
datos=get_pass(usuario)
if datos == False:
print 'Mientes'
s.close()
cliente_socket.close()
d = datos[0]
n = datos[1]
r = str(por(y,d) %n)
s.send(usuario)
s.send(r)
s.close
main()
view raw client.py hosted with ❤ by GitHub
..

Y bien, lo que es respecto al rsa pues las claves si me las genera, pero... (el gran pero llego! D:) tuve problemas al establecer la conexion entre el cliente-servidor y mi generador de claves .__. pero seguire intentado resolverlo, ya que lo necesitare para la siguiene tarea.. :) 




Esto no termina aqui!! #Hedicho!

jueves, 6 de septiembre de 2012

Diffie-Hellman Key Exchange

In this week i worked in Diffie-Hellman Key Exchange method, in this practice i will talk about what i did 

In this practice my teamates Vane and Rodolfo are Alice and Bob respectly, on this ocasion I will be Eve.  These are the numbers they gave me:




P=7
g=3
X=3
Y=2
From this i used the following formulas to obtain x, y and K.

X=g^x%P
Y=g^y%P
K=X^y%P
K=Y^%P









References

http://es.wikipedia.org/wiki/Diffie-Hellman