我必须操作非常大的数字可能是2048字节用于实现RSA。根据汽车领域的规则,我不能使用使用标准libc的bignum库。我搜索了GMP和Polarssl,但他们都使用malloc()和其他东西。
那么有没有可用的库/方法不依赖于libc并且还管理这么大的数字..? ???
答案 0 :(得分:2)
我认为你不会发现任何体面的大整数C库,不使用malloc
,calloc
和可能realloc
或任何动态分配,因为< strong>任意精度数字超出了有限的,与平台相关的堆栈大小,其次是比编译时静态内存分配更灵活的方法。
我的猜测是调整mini-gmp
包以克服您的特定限制。 (你会在主目录下找到它并进行一些测试)。它包含一个头文件和一个C源文件,所以它应该更简单地“切断”libc
依赖而不是全功能版本,但它不会那么快,因为GMP严重依赖于高度 - 针对各种CPU架构的优化汇编代码。
根据 kkrambo 的建议,您也可以尝试BigDigits
库NO_ALLOCS
选项,该版本自2.2版开始提供:
添加NO_ALLOCS选项以编译“mp”库而不使用 任何内存分配。