可变旋转 RC6 密码的恒定时间实现

标签 c compile-time-constant

RC6 wiki使用取决于对数值的可变左旋转值。我有兴趣找到一种方法来实现 RC6 的恒定时间 c 代码。是否有开源或关于如何在恒定时间代码中实现变量左旋转的想法。

最佳答案

这一点在 https://pdfs.semanticscholar.org/bf3e/23be81385817319524ee6bb1d62e9054d153.pdf 的第 4.1 节中得到解决。 .简短的总结是:

  • 大多数处理器都需要固定时间进行轮换,包括数据相关轮换(无论如何,在提出 rc6 时就是这种情况)

  • 即使移动 k 位的运行时间与 k 个周期成正比,然后要进行循环左旋转,您需要先左移 k 位,然后右移 32-k 位,这样得到32个循环的恒定时间。

我不知道现代架构的细节,但我想我会反过来问这个问题,并问一个逻辑不正确的例子。

关于可变旋转 RC6 密码的恒定时间实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54178730/

相关文章:

c - 从 C 中的字符串加载 openssl RSA key

java - 图像跟踪器库

java - 为什么 Java 常量除以零不会产生编译时错误?

c++ - 从编译器获取参数时,有没有办法避免预处理器宏?

c - 库不是使用 makefile 创建的

从图创建邻接矩阵

c - 1 除以非常大的数返回 0, C

c++ - 自定义strtoi函数编译时间问题

java - 最终变量和编译时间常数之间的差异

c# - 为什么将 null 转换为类型以进行方法选择?