我正在阅读本文是关于RC6的,在形式上,该算法是为任意字号的w定义的,尽管在AES提交时只考虑了w=32。现在,论文明确地提到了选择w=24等。后来在论文中,它说:
“
w的基数-两个对数将用\operatorname{lg}w__表示。”
作为加密例程的一部分,执行以下步骤:t = (B\times(2B+1)) \lll \operatorname{lg} w --这对于w=32来说非常有意义,因为32是2的幂,而\operatorname{lg} w是一个整数,您可以通过它旋转另一个整数。然而,对于w=24,这正式要求我将值旋转成近似4.584962500721156位,我觉得这很令人费解。
我的问题是:对于允许为\operatorname{lg} w提供其他值的RC6的实现,对w的正确解释是什么,特别是当D16不是两种力量的时候?
发布于 2022-03-20 22:53:48
来自多块尺寸的RC6和RC5测试向量 (草案-krovetz-rc6-rc5-向量-00)
/* Calculate floor(base-2 log of x) for any x>0. */
static int lg2(int x) {
int ans=0;
for ( ; x!=1; x>>=1)
ans++;
return ans;
}所以返回的是整数部分的LSB;
log_w = (unsigned int)log2(w);
测试它的这里,
https://crypto.stackexchange.com/questions/99197
复制相似问题