Es muy probable que esté rota alguna parte de la electrónica, lo cual no vas a poder hacer nada al respecto.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú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 )
Ademas, seria bueno hacerlo multilenguaje
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
Cita de: Wikipedia1. Cada usuario elige dos números primos distintos p y q."Deben escogerse de forma aleatoria" no significa que uno tiene que pensar en un número y ponerlo apretando teclas en el numpad. Es cierto que el ser humano es una excelente máquina generadora de aleatoriedad, pero la mejor manera de generar números aleatorios, es utilizando lo que se conoce como "generadores pseudo-aleatorios", este término es largo de explicar, y por eso incluí un apartado sobre generadores pseudo-aleatorios al final del capítulo. Como semilla, se utilizan fuentes de aleatoriedad, por ejemplo, movimientos del mouse, temperaturas de los dispositivos, etc.
* Por motivos de seguridad, estos números deben escogerse de forma aleatoria y deben tener una longitud en bits parecida. Se pueden hallar primos fácilmente mediante test de primalidad.
Cita de: Wikipedia2. Se calcula n = p*q.Módulo: En este caso, el módulo se define como el resto de una división.
* n se usa como el módulo para ambas claves, pública y privada.
Cita de: Wikipedia3. Se calcula φ (n)=(p-1)(q-1), donde φ es la función φ de Euler.Tranquilos!! Ahora explico la funcion φ de Euler!.
Cita de: Wikipedia4. Se escoge un entero positivo e menor que φ(n), que sea coprimo con φ(n).Volviendo al ejemplo anterior, un número entero positivo "e" menor que φ(n), que sea coprimo con φ(n) podría ser: 5, 7 ú 11.
* "e" se da a conocer como el exponente de la clave pública.
* Un exponente e muy pequeño (p. ej. e = 3) podría suponer un riesgo para la seguridad.
Cita de: Wikipedia5. Se determina un d (mediante aritmética modular) que satisfaga la congruencia de cong(1) mod φ(n)El algoritmo de Euclides Extendido, se puede utilizar para calcular "d". Siendo que este algoritmo requiere conocimientos algebráicos y de matrices que realmente no tiene ningun sentido ponerse a explicar y en caso de que hiciese falta aplicarlo en algún código, este se puede conseguir googleando un rato, voy a saltar explicarlo y vamos a pasar directamente al resultado.
* Expresado de otra manera, de − 1 es dividido por a φ(n)=(p-1)(q-1).
* Esto suele calcularse mediante el algoritmo de Euclides extendido.
* d se guarda como el exponente de la clave privada.
function modular_pow(base, exponent, modulus)
c := 1
for e_prime = 1 to exponent
c := (c * base) mod modulus
return c
#include <iostream>
#include <math.h>
#define GENERATOR 2
#define MODULUS 19
using namespace std;
long modpow(long modulus, long base, long exponent);
int main()
{
bool testarray[MODULUS];
bool gen = true;
for(int i = 0; i < MODULUS - 1;i++) testarray[i] = false;
for(int i = 0; i < MODULUS - 1;i++)
{
long long r = modpow(MODULUS, GENERATOR, i+1);
if(testarray[r])
{
gen = false;
break;
}
testarray[r] = true;
if(i%10000 == 0) cout << i << endl;
}
if (gen) for(int i = 1; i < MODULUS; i++) if(!testarray[i])
{
gen = false;
break;
}
if (gen) cout << "Generator!" << endl;
else cout << "Not a generator" << endl;
}
long modpow(long modulus, long base, long exponent)
{
long Output = 1;
for(int i = 1; i <= exponent; i++)
{
Output = (Output * base)%modulus;
}
return Output;
}