GFP2Element
не имеет перегруженного оператора извлечения.Вы просто печатаете c1
и c2
элементы, которые Integer
типов.(Это та же самая стратегия, скажем, для элементов поля эллиптической кривой).
$ cat test.cxx
#include "cryptlib.h"
#include "osrng.h"
#include "xtrcrypt.h"
#include <iostream>
int main()
{
using namespace CryptoPP;
AutoSeededRandomPool aSRP;
XTR_DH xtr(aSRP, 251, 224);
std::cout << "Prime: " << std::hex << xtr.GetModulus() << std::endl;
std::cout << "Generator" << std::endl;
std::cout << " c1: " << std::hex << xtr.GetSubgroupGenerator().c1 << std::endl;
std::cout << " c2: " << std::hex << xtr.GetSubgroupGenerator().c2 << std::endl;
return 0;
}
И:
$ g++ -DNDEBUG -g2 -O3 -fPIC -pthread test.cxx ./libcryptopp.a -o test.exe
$ ./test.exe
Prime: 607cd5cbdfa7ac6ed4fecaa83458fb7d9675a32f002a54380f22fd54d1b9c67h
Generator
c1: 420c85a614a6f0426e6655a44fe6e1ea00ed27fbf1adbe23f4ad358ad837c9ah
c2: 2ef44b40639a34fb0b4f9a5aab1d89bd0eca5c19c160e007daf1dd2bbe730eeh
Также см. XTR-DH на Crypto ++Вики и заголовочный файл xtr.h
.
Относительно:
XTR_DH xtr(aSRP, 251, 224);
pbits=251
и qbits=224
немного не соответствует.Для обеспечения безопасности в 80 бит рекомендуется использовать pbits=170
и qbits=160
.Это примерно равно 1024-битному модулю RSA.
Для 112-битной защиты рекомендуется использовать pbits=341
и qbits=224-256
.Это примерно равно 2048-битному модулю RSA.
Для 128-битной защиты рекомендуется использовать pbits=512
и qbits=256
.Это примерно равно 3072-битному модулю RSA.
Также см. Уровень безопасности в вики Crypto ++.