Posted on ::

算法描述

算法类型: 对称加密

密钥长度: 128位 (16字节)

明文长度: 64位 (8字节)

明文被分为两个32位的分组$(L_0,R_0)$, 密钥被分为4个32位的分组$(K_0,K_1,K_2,K_3)$.加密涉及两轮的重复应用定义第$i$轮和第$i+1$轮运算如下:

$$ \begin{split} &L_i=R_{i-1}\\ &R_i=L_{i-1}+F(R_{i-1}, K_0, K_1, \delta_i)\\ &L_{i+1}=R_i\\ &R_{i+1}=L_i+F(R_i, K_2, K_3, \delta_{i+1})\\ \end{split} $$ $F$的定义如下:

$$ F(M, K_j, K_k, \delta_i)=((M<<4)+K_j)\oplus ((M>>5)+K_k)\oplus (M+\delta_i) $$

其中, $\oplus$代表异或操作, $\{\delta_i\}$是一个预定义的常量序列.

在算法实现中, 轮数一般为32轮, $\{\delta_i\}$一般定义为:

$$ \begin{split} &\delta = \mathrm{0x9e3779b9}\\ &\delta_i = \delta \times i\\ \end{split} $$

这里的$\delta$被称为魔数,其来自黄金分割比,在数学上$\delta = \frac{\sqrt{5}-1}{2}\times 2^{32}$

Table of Contents