C implementa algoritmos de cifrado y descifrado RSA
Usar espacio de nombres std
Plantilla lt clase Hewitt gt
enorme int Power(const enorme int amp; x, const HugeInt ampn, // Encuentra x^n mod p
const HugeInt ampp)
{
Si (n == 0)
Devuelve 1;
EnormeInt tmp = Potencia( (x * x) p, n / 2, p);
if( n 2!= 0)
tmp = ( tmp * x) p;
return tmp
}
plantilla lt clase hewitt gt
void gcd completo (const enorme int amp ; const EnormeInt ampb, //
EnormeInt ampx, EnormeInt ampy)
{
EnormeInt x1, y 1;
EnormeInt ampx , HugeInt ampy)
p>
Si (b == 0)
{
x = 1
y; = 0;
}
Otro
{
fullGcd( b, a b, x1, y 1);
x = y 1;
y = x 1-(a/b)* y 1;
}
}
Plantilla lt clase Hewitt gt p>
HugeInt inversa (const HugeInt ampp, const HugeInt ampq, //buscar d
const HugeInt ampe)
{ p>
int fyn =( 1-p)*(1-q);
HugeInt x, y
fullGcd( fyn, e, x, y);
return x gt0 ?x:x e;
}
int main()
{
cout lt ltIngrese texto sin formato: " lt ltendl
int m;
CIN gt; gtm;
cout lt ltIngrese p, q y e: " lt ; ltendl
int p, q, e;
CIN gt; gtp gtq gt gte;
int n = p * q;
int d = inverse( p, q, e);
int C = power (m, e, n);
cout lt lt" El texto cifrado es: " lt ltC lt ltendl
cout lt lt\ n \Ingrese el texto cifrado: " lt ltendl
CIN gt; gtc;
cout lt lt\ n \ Introduzca p, q y d: " lt; ltendl
CIN gt; gtp gt gtq gt gtd;
n = p * q;
m = power (C, d, n);
cout lt ltEl texto sin formato es: "lt ltm lt ltendl lt ltendl
p>
System("pause");
Return 0;
}
Este es el algoritmo de cifrado y descifrado RSA.