Páginas: 1 [2]
|
 |
|
Autor
|
Tema: RSA para no iniciados (Leído 10276 veces)
|
|
nhaalclkiemr
|
Entonces que inconveniente tiene RSA??. Tiene que tener alguno para que no sea muy utilizado como por ejemplo el MD5.
|
|
|
|
|
En línea
|
|
|
|
|
Cobac
|
Son dos cosas distintas. El MD5 es una función de hash, se emplea para dar autenticidad a un programa (principalmente) Me explico, tu te bajas un programa con un hash X, si en el sitio de donde te lo has bajado pone que ese archivo tiene otro hash, dirás, "mierd*!, alguien ha modificado el archivo!". Si tiene el mismo hash quiere decir que es el mismo archivo (de ahí que si se puede encontrar dos archivos con el mismo hash es peligroso, imaginate que yo logro hacer un troyano con el hash anterior, y lo pongo en esa web -u otra- y la gente se lo descarga con confianza, ya que tiene el mismo hash que el auténtico) Más información -> http://es.wikipedia.org/wiki/MD5Y dado las vulnerabilidades que se le han encontrado, se empiezan a recomendar SHA-1 y demás (aunque al SHA-1 tampoco le queda mucho, y ya se estan buscando otras funciones de hash) salu2!
|
|
|
|
|
En línea
|
PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda
En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
|
|
|
|
nhaalclkiemr
|
Aunke SHA1 es algo mas fuerte tambien se le hayaron colisiones. Lo mejor es SHA2-512  Me confundi con el RSA. Gracias. un saludo 
|
|
|
|
|
En línea
|
|
|
|
|
tetiviri
|
Hola a todos, a pesar de leer y leer no me queda claro como descifrar una vez que tengo la clave publica ya que si n es mayor que el resultado de cifrado no podria divirlos. Para ser mas claro os pondré el ejemplo siguiente que es un ejercicio que tengo que hacer y no se por donde entrar.  Un mensaje es cifrado usando RSA con clave pública n=70757 y e=19 dando como resultado {41822, 60864, 1, 60864, 13931, 39153, 1, 38703, 11991, 38652, 13931, 38703, 13931, 60864, 13931, 59079, 55099, 41822, 9478, 36994, 1, 41822, 1, 36994, 41822, 38652, 39153, 9478, 60864, 60864, 55099, 52388, 38652, 6985, 38652, 6985, 38652, 13931, 38703, 11991, 13931, 39153, 13931, 38703, 11991, 13931, 60864, 59079, 41822, 1, 38703, 51989, 13931, 60864} donde cada número se corresponde al cifrado de un sólo carácter. Teniendo en cuenta que cada carácter del alfabeto es codificado antes de cifrar como A->1,B->2,C->3,etc..., ¿cuál es el mensaje original?. Lo que tendria que hacer segun he entendido seria dividir 41822/70757, pero claro en los ejemplos que he visto el numerador es superior al denominador y con el resto que obtenemos sustituimos en el alfabeto en mi caso. Si alguien pudiera aclararme algo le estaria muy agradecido pues como veis estoy totalmente perdido...  Un saludo y gracias por vuestro tiempo!
|
|
|
|
|
En línea
|
|
|
|
|
ghastlyX
|
Descifrado: RSASEMANTIENESEGUROPARAPRIMOSSUFICICIENTEMENTESGRANDES Con números: {19, 20, 1, 20, 5, 13, 1, 14, 21, 9, 5, 14, 5, 20, 5, 7, 22, 19, 16, 17, 1, 19, 1, 17, 19, 9, 13, 16, 20, 20, 22, 6, 9, 3, 9, 3, 9, 5, 14, 21, 5, 13, 5, 14, 21, 5, 20, 7, 19, 1, 14, 4, 5, 20} Datos: d = 7387 p = 173 q = 409 Un saludo de ghastlyX 
|
|
|
|
|
En línea
|
|
|
|
|
tetiviri
|
MUCHISIMAS MUCHISIMAS GRACIAS!!! Me has hecho un favor enorme. ¿Me podrias explicar un poco como lo has hecho?
Lo dicho, ha sido todo un detalle que hayas respondido en cuestion de una hora. Gracias!
|
|
|
|
|
En línea
|
|
|
|
|
ghastlyX
|
Primero factorizas n y obtienes p = 173 y q = 409. Calculas d, tal que d * e (mod phi(n)) = 1. Recuerda que phi(n) = (p - 1) * (q - 1). Para calcular d hice este código en C: #define E 19 #define PHI_N 70176 //(p - 1) * (q - 1) #include <stdio.h> int main() { int i; for(i = 0; i < 70757; i++) { if(((i * E) % PHI_N) == 1) printf("d = %d\n", i); } return 0; } Una vez tenemos d = 7387, desciframos cada letra. Si llamamos c a la letra a descifrar y m la letra original, m = (c ^ d) (mod n). Así ya tendrás el mensaje descifrado en números: {19, 20, 1, 20, 5, 13, 1, 14, 21, 9, 5, 14, 5, 20, 5, 7, 22, 19, 16, 17, 1, 19, 1, 17, 19, 9, 13, 16, 20, 20, 22, 6, 9, 3, 9, 3, 9, 5, 14, 21, 5, 13, 5, 14, 21, 5, 20, 7, 19, 1, 14, 4, 5, 20} Así tan sólo te queda sustituirlo por las letras, que no tiene mucho misterio xDD. Hice este programa para que me lo hiciera solo si no te apetece hacerlo a mano: #include <stdio.h> int main() { int i; char abc[] = " ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"; int cifrado[] = {19, 20, 1, 20, 5, 13, 1, 14, 21, 9, 5, 14, 5, 20, 5, 7, 22, 19, 16, 17, 1, 19, 1, 17, 19, 9, 13, 16, 20, 20, 22, 6, 9, 3, 9, 3, 9, 5, 14, 21, 5, 13, 5, 14, 21, 5, 20, 7, 19, 1, 14, 4, 5, 20}; for(i = 0; i < 54; i++) printf("%c", abc[cifrado[i]]); return 0; } Para hacer el paso de descifrar tendrás problemas con elevar a d según qué métode utilices. La calculadora de Windows sorprendentemente parece que lo realiza bien, yo utilizo un sistema de cadenas para estas cuentas tan bestias. Un saludo de ghastlyX 
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: 1 [2]
|
|
|
|