Estoy usando el algoritmo RSA para el cifrado/descifrado, y para descifrar los archivos tiene que lidiar con algunos valores bastante grandes. Más específicamente, cosas comoC++ manejo de enteros muy grandes
P = C^d % n
= 62^65 % 133
Este es realmente el único cálculo que haré. He intentado usar Biblioteca BigInteger de Matt McCutchen, pero estoy recibiendo una gran cantidad de errores de compilación durante el enlace, tales como:
encryption.o(.text+0x187):encryption.cpp: undefined reference to `BigInteger::BigInteger(int)'
encryption.o(.text+0x302):encryption.cpp: undefined reference to `operator<<(std::ostream&, BigInteger const&)'
encryption.o(.text$_ZNK10BigIntegermlERKS_[BigInteger::operator*(BigInteger const&) const]+0x63):encryption.cpp: undefined reference to `BigInteger::multiply(BigInteger const&, BigInteger const&)'
Así que me preguntaba cuál sería la mejor manera de ir sobre el manejo de los realmente grandes números enteros que salir del algoritmo RSA.
oí que una posibilidad sería declarar las variables como un doble de largo, así que ...
long long decryptedCharacter;
pero no estoy seguro exactamente qué tan grande de un número entero que puede almacenar.
Bueno, por ejemplo, trato de compilar y ejecutar el siguiente programa usando dev C++:
#include iostream
#include "bigint\BigIntegerLibrary.hh"
using namespace std;
int main()
{
BigInteger a = 65536;
cout << (a * a * a * a * a * a * a * a);
return 0;
}
en cuando me siento esos errores.
Derek, pensé que al incluir el archivo BigIntegerLibrary.hh
, el compilador realizaría y compilaría todos los archivos necesarios que usaría.
¿Cómo debo tratar de compilar el programa anterior para resolver los errores de enlace?
Si es posible, nunca escriba sus propias rutinas criptográficas excepto por diversión o aprendizaje. Hay una cantidad espantosa de cosas no obvias que puedes equivocarte. –
Para calcular A^B mod C, no hay necesidad de utilizar la potencia real, use [exponenciación modular] (https://en.wikipedia.org/wiki/Modular_exponentiation). Hay muchas preguntas sobre esto aquí: http://stackoverflow.com/questions/8496182/calculating-powa-b-mod-n?lq=1 http://stackoverflow.com/questions/8287144/modulus-power- of-big-numbers? lq = 1 –
http://stackoverflow.com/questions/2207006/modular-exponentiation-for-high-numbers-in-c?rq=1 –