现代密码课程中指出RC6加密算法中的非线性部分,并证明这部分是双射函数
时间: 2024-04-06 08:34:42 浏览: 122
AVR单片机的RC5和RC6算法比较与改进
RC6加密算法的非线性部分是指将输入的字(word)按位进行旋转、异或、加法等操作后得到的结果。具体来说,设输入的字为$x$,则其非线性部分的计算方法为:
1. 将$x$按位循环左移$b$位,其中$b$为RC6算法的一个参数;
2. 将$x$异或上一个用RC6算法中的密钥扩展函数生成的轮密钥$K_i$,得到$y=x\oplus K_i$;
3. 将$y$加上一个用RC6算法中的伪随机数生成函数生成的伪随机数$T_i$,得到$z=y+T_i$。
其中,$i$表示当前轮数。
现证明RC6加密算法的非线性部分是双射函数:
首先,我们需要证明RC6加密算法的非线性部分是一个函数。由于RC6算法中的密钥扩展函数和伪随机数生成函数都是确定性函数,因此非线性部分是一个确定性函数,即对于相同的输入,输出必定相同,因此RC6加密算法的非线性部分是一个函数。
其次,我们需要证明RC6加密算法的非线性部分是一个满射函数和一个单射函数。设$x_1$和$x_2$是输入的两个不同的字,且它们的二进制表示不同。则根据RC6算法的非线性部分的计算方法,我们可以得到:
$F(x_1)\neq F(x_2)$
即RC6算法的非线性部分是一个单射函数。又因为RC6算法的非线性部分的输入和输出都是32位的字,因此非线性部分的输入域和输出域均为$2^{32}$,即有限域。而非线性部分的计算方法中包含了循环左移、异或和加法等基本运算,这些运算均为双射函数。因此,RC6算法的非线性部分是由双射函数组成的复合函数,因此也是一个双射函数。
综上所述,RC6加密算法的非线性部分是一个双射函数。
阅读全文