Título: algortimo RSA en phyton Publicado por: engel lex en 6 Enero 2015, 00:41 am Ya que se estaba discutiendo el asunto de algoritmos asimetricos decidí esta vez hacer un codigo y epxlicarlo un poco
Para los que no sepan RSA es un algoritmo de cifrado asimetrico (el que usa http para compartir las contraseñas) el cual se basa en la creacion de 2 claves, una privada y otra publica, la llave publica cifra, la privada descifra... esto es creado por una serie de problemas: 1. la dificultad de manejar multiples contraseñas para comunicarse con mutiples sujetos 2. la complicacion de compartir contraseñas sobre internet sin que un hombre en el medio se entere con este metodo uno comparte su llave publica para que se comuniquen con uno la llave publica solo cifra, para descifrar se necesita la llave privada si quieren más detalles todo está en wikipedia para hacer el proceso se necesitan 2 factores "p" y "q" ambos numeros primos diferentes y de una cantidad de bites similar por seguridad (actualmente se usan numeros de unas 150 cifras de largo) de aquí sacamos 2 factores más "n" que es la multiplicacion de "p" y "q" "phi" que será el resultado de la multiplicacion de la funcion phi (http://es.wikipedia.org/wiki/Funci%C3%B3n_%CF%86_de_Euler) de "p" y "q", que en resumen al ser ambos primos serán (p-1) y (q-1) de todo esto necesitamos calcular el factor "e" es un factor tal que 1 < e < phi con "e" procedemos a calcular "d" siendo este un factor que satisfaga la ecuacion Código: (d*e)%phi == 1 "e" es el factor que armará la clave publica y "d" la clave privada el cifrado se hace bajo la siguiente formula (http://upload.wikimedia.org/math/7/0/2/702420a34f3c5e7c7cb12a4eac2d622c.png) y el descifrado con la siguiente (http://upload.wikimedia.org/math/2/9/f/29fa83503086876bff95b20f08413e21.png) esto funciona porque (para quien sepa matematica) (http://upload.wikimedia.org/math/a/7/5/a75a4868acbe8179e9a0c85a179a3a08.png) bueno, sin dar más vueltas aquí el codigo con verificaciones Código
explico un poco las funciones Código simplemente genera un array bidimensional de el largo indicado Código confirma que un numero pasado sea primo bajo un metodo rapido Código genera numeros primos, genera el primo de la n-ava posicion Código saca los multiplos de un numero Código confirma que los numeros sean coprimos (que no tengan factores en común) las otras son autoexplicativas al final Código aplica RSA con el 20-avo primo, y 32-avo primo como p y q, y el mensaje es 100... pueden colocar lo que quieran y usar primos directamente... si... el codigo solo lo hace con calculos numericos y puede tardar algunos segundos en finalizar si los nvo primos están sobre 1000, el mensaje debe ser menor a "n" si cualquier duda o correción pueden publicarla aquí Título: Re: algortimo RSA en phyton Publicado por: vk496 en 6 Enero 2015, 00:47 am Gracias por compartir.
Salu2 Solo una duda. Cito textual de Wikipedia (RSA): Citar Se debe observar que la seguridad de los padding-schemes como RSA-PSS son esenciales tanto para la seguridad de la firma como para el cifrado de mensajes, y que nunca se debería usar la misma clave para propósitos de cifrado y de autentificación. Alguien podría explicarlo? Por que no recomiendas que utilice la misma clave para ambas situaciones? Salu2 [MOD]: Porfavor, no hagas doble post. |