Taller: Criptografía asimétrica.

Iniciado por APOKLIPTICO, 7 Octubre 2010, 22:58 PM

0 Miembros y 1 Visitante están viendo este tema.

Freeze.

Por ahora no tengo dudas o mejor dicho no las publicaré, pero si puedo compartir con todos este link muy bueno acerca de RSA: http://www.di-mgt.com.au/rsa_alg.html

Saludos, sigue asi ;)

braulio--

Cita de: APOKLIPTICO en 10 Octubre 2010, 00:51 AM
Cita de: WestOn en  9 Octubre 2010, 23:04 PM
;-)
Tengo para un buen rato, modificaré el mensaje si tengo dudas gracias por todo el material.

Saludos

PD: Respecto a lo que acaba de comentar braulio-- ¿no daria overflow con estos datos?
6580797576738084736879 ^ 17 mod 3233

;)

No te olvides que "m" siempre tiene que ser menor que el módulo.
Cuando yo puse esos datos, no los puse para que sean usados todos juntos, si los ponés todos juntos, después como los separás? Esos son de 2 dígitos, pero si tenés que cifrar algo que no es un texto, vas a tener todo el espectro ascii.
Si vos te fijas, yo puse 65^17 mod 3233 y luego 80^17 mod 3233, etc.

Ok, perfecto.

WestOn

Buenas:
Cita de: APOKLIPTICO
No te olvides que "m" siempre tiene que ser menor que el módulo.
Aiba que fallo...
Yo por el momento no tengo dudas relacionado con lo que has publicado, pero lo sigo releyendo porque 'tiene sustancia' :P, pero si me gustaría saber en el lenguaje que se va a programar. ¿C/C++? ¿Phyton?
Saludos ;)
En mi cabeza existe una barrera espacio-tiempo de 4cm³. ¿Alguien sabe como eliminarla?.
                                                                                                                                                                                                                            

APOKLIPTICO

Yo creo que el lenguaje idóneo sería C/C++, se que es un lenguaje de medio nivel, muy versatil y util, eficiente y optimizable. No estoy familiarizado con todos los lenguajes como para decir que "hay que usar C++", pero se que por ejemplo, Visual Basic no vamos a usar.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

raul338

Habria que hacer la estructura del algoritmo, hacerlo en un lenguaje base tipo C/C++ ... y el que lo quiera que lo pase a otro lenguaje (yo pienso pasarlo a vb cueste lo que cueste :xD)

Ademas, seria bueno hacerlo multilenguaje

bomba1990

para lo del lenguaje deberiamos hacerlo en pseudocodigo y algun lenguaje que decidamos entre todos(como c++) y despues cada quien lo puede pasar a otro lenguaje y lo postea
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

APOKLIPTICO

Cita de: raul338 en 11 Octubre 2010, 01:46 AM
Habria que hacer la estructura del algoritmo, hacerlo en un lenguaje base tipo C/C++ ... y el que lo quiera que lo pase a otro lenguaje (yo pienso pasarlo a vb cueste lo que cueste :xD)

Ademas, seria bueno hacerlo multilenguaje

La eficiencia de VB es muy baja, un código en VB te tarda muchisimo más que en C++.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

raul338

Pero funcionaria igual :)

No te preocupes de la eficiciencia, esta claro que un lenguaje interpretado siempre sera mas lento que uno compilado. El que lo quiera pasar al lenguaje que quiera es libre de hacerlo. No desviemos el tema

APOKLIPTICO

Por supuesto, aparte, siempre se pueden hacer las funciones en C++, compilar una dll e importarlas en VB, yo lo he hecho muchas veces.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

APOKLIPTICO

#39
Mira esto:
Calcular 31^100000000 mod 5200:
Código (cpp) [Seleccionar]

#include <iostream>
#include <ctime>
using namespace std;

int main()
{
   long startime = clock();
   long out = modpow(5200, 31, 100000000);
   cout <<  (float) (clock() - startime) / CLOCKS_PER_SEC;
}

long modpow(long modulus, long base, long exponent)
{
   long Output = 1;
   for(int i = 1; i <= exponent; i++)
   {
       Output = (Output * base)%modulus;
   }
   return Output;
}


Código (vb) [Seleccionar]
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Form_Load()
Dim starttime As Long
Dim res As Long
starttime = GetTickCount
res = modpow(5200, 31, 100000000)
MsgBox (GetTickCount() - starttime)
End
End Sub

Function modpow(ByVal modulus As Long, ByVal base As Long, ByVal exponent As Long)
Dim i As Long
Dim output As Long
output = 1
For i = 1 To exponent
DoEvents
output = (output * base) Mod modulus
Next i
modpow = output
End Function



Resultados:
C++: 4,391 Segundos.
VB: 58 hs, 20 minutos.

Relación: C++ es 47825 veces más rápido que VB.

PD: Y si uso OpenCL y calculo con la GPU, puedo calcularlo 100 veces más rápido. Esto es en C++.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.