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