Я использую алгоритм RSA для шифрования / дешифрования, и для расшифровки файлов приходится иметь дело с некоторыми довольно большими значениями. В частности, такие вещи, как
P = C^d % n
= 62^65 % 133
Теперь это действительно единственные вычисления, которые я буду делать. Я пытался использовать библиотеку Мэтта Маккатчена BigInteger, но во время компоновки получаю много ошибок компилятора, например:
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&)'
Так что мне было интересно, как лучше всего обращаться с действительно большими целыми числами, которые возникают из алгоритма RSA.
Я слышал, что есть возможность объявить ваши переменные как двойные, так что ...
long long decryptedCharacter;
но я не уверен точно, насколько велико целое число, которое можно хранить.
Ну, например, я пытаюсь скомпилировать и запустить следующую программу, используя 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;
}
тогда я получаю эти ошибки.
Дерек, я думал, что, включив файл BigIntegerLibrary.hh
, компилятор сможет выполнить все необходимые ему файлы.
Как мне попытаться скомпилировать программу выше для устранения ошибок компоновки?