c - GMP 为中间计算创建的对象是否保留在内存中?
问题描述
我正在尝试使用 GMP 6.2.1 作为用于加密的长整数计算的后端。最好的做法是不要留下任何敏感计算的痕迹超过需要的时间。因此,我想确保 GMP 不会在内存中留下任何内容,但在文档中找不到任何关于它的内容。
我是否正确假设内存中存在两种可能的不需要值的来源:
- 将数字重新分配到更大的内存部分。可能由于自我分配而发生,例如
mpz_mul (x, x, x);
. - GMP 函数内部的中间计算,它们以某种方式与这些函数的操作数或输出相关。
虽然似乎可以通过正确设计客户端代码来避免重新分配,但中间变量困扰着我,至少是那些在堆上分配的变量。GMP在这方面是否有任何明确的保证?
解决方案
GMP为密码学提供了一些低级功能,特别是让您可以控制分配。
推荐阅读
- go - 使用互斥锁和反射时的竞争条件
- git - git clone 失败,无法访问
- concurrency - 如何在 rust 中执行线程安全 IO 和缓存到文件?
- ssis - 如何在 C# 中修改数据表
- c# - 我是否需要创建一个存储过程来检查主机名是否存在?
- php - 我已经尝试了堆栈溢出的所有解决方案然后我也收到语法错误,意外的'endwhile'(T_ENDWHILE)
- reactjs - 我想在本机反应中用按钮制作一个圆圈
- assembly - 使用汇编语言的阶乘程序,用户需要输入一个整数。但是,我得到了非法指令
- ios - 保存的透明图像在 Swift 中返回黑色背景
- python-3.x - ModuleNotFoundError:没有名为“帐户”的模块