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/