我正在寻找一个很好的基础BigInt类在C++中,我发现很多实现,但大多数时候,它是加密库的复杂实现...
基本上,我的意思是BigInt可以处理BigInt,long long和带有运算符重载的字符串.如果我有时间,我已经完成了自己,但我没有时间创建一个完整的BigInt类.
我正在做Elgamal签名方案,我需要使用消息中的十进制哈希值来计算S以进行签名生成.十六进制哈希的一个示例是:
820dbb4256a4287557ade2f729d279f1
Run Code Online (Sandbox Code Playgroud)
如上所示,哈希值是32位十六进制数.我需要将上面的字符串转换为十进制整数,然后将其用于计算.
string hash = md5(message);
cout << hash << endl;
NTL::ZZ msgHash = strtol(hash.c_str(), NULL, 16);
cout << msgHash << endl;
Run Code Online (Sandbox Code Playgroud)
没有足够大的整数来包含32字节十六进制哈希的值,所以我尝试了来自NTL库的大整数,但它没有解决,因为你不能分配从strtol函数返回的长整数(我认为十进制哈希值比NTL :: ZZ类型的长整数范围限制长.这有什么好的解决方案吗?
我在Visual Studio 2013中使用visual C++这样做.
我知道的最大正整数数据类型是unsigned long long。有没有办法在C ++中处理2 ^ 9000000的整数。我在代码块中使用了gcc编译器,但也可以在Visual Studio上工作。
如何在 c/c++ 中创建具有自定义字节大小的类型?