Tôi đang sử dụng Thuật toán RSA để mã hóa / giải mã và để giải mã các tệp, bạn phải xử lý một số giá trị khá lớn. Cụ thể hơn, những thứ như
P = C^d % n
= 62^65 % 133
Bây giờ đó thực sự là những tính toán duy nhất mà tôi đang làm. Tôi đã thử sử dụng Thư viện BigInteger của Matt McCutchen, nhưng tôi gặp rất nhiều lỗi trình biên dịch trong quá trình liên kết, chẳng hạn như:
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&)'
Vì vậy, tôi đã tự hỏi đâu sẽ là cách tốt nhất để xử lý các số nguyên thực sự lớn từ Thuật toán RSA.
Tôi nghe nói rằng một khả năng sẽ là khai báo các biến của bạn dưới dạng dài gấp đôi, vì vậy ...
long long decryptedCharacter;
nhưng tôi không chắc chắn chính xác độ lớn của một số nguyên có thể lưu trữ.
Ví dụ: tôi cố gắng biên dịch và chạy chương trình sau bằng cách sử dụng 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;
}
thì tôi nhận được những lỗi đó.
Derek, tôi nghĩ rằng bằng cách bao gồm BigIntegerLibrary.hh
tệp, trình biên dịch sẽ duyệt qua và biên dịch tất cả các tệp cần thiết mà nó sẽ sử dụng.
Tôi nên thử và biên dịch chương trình ở trên như thế nào để giải quyết các lỗi liên kết?