DES补充材料

作为参考，本文提供了数据加密标准（DES）块密码中提到的各种查找表的细节。

本文档中的数据都是以大端序排列的，也即首位为MSB。

初始置换(IP, Initial permutation)
400px|right|IP置换过程
IP58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157
该表显示了对64位块的初始置换，其意义如下：输出的首位为输入的第58位，第二位为50位，依此类推，输出的最后位为输入的第7位。

以上信息为了方便表示被写成表格形式，但它实际上是一个矢量，而非矩阵。

最终置换 (IP-1)
400px|right|IP-1的过程
IP−140 848165624643239 747155523633138 646145422623037 545135321612936 444125220602835 343115119592734 242105018582633 141949175725

IP-1（亦被称为FP）是IP的逆过程，上表的含义与IP的相似。

扩张函数 (E函数)
400px|right|E函数
E3212345456789891011121312131415161716171819202120212223242524252627282928293031321
扩张函数被作为最初和最终的置换。注意输入中的某些位在输出中被用到了不止一次，例如输入的第5位出现在输出的第6和8位。因此，32位的半块输入被扩张到了48位。

P置换
300px|right|P permutation
P1672021291228171152326518311028241432273919133062211425

P置换将32位的半块数据重新排列。

选择置换1(PC-1)
400px|right|PC-1
PC-1左5749413325179158504234261810259514335271911360524436右6355473931231576254463830221466153453729211352820124
上表的“左”和“右”两部分表现了输入密钥组成密钥调度状态中左右两部分的过程。主要输入的64位数据中只用到了56位，剩余的8位可以用于奇偶校验。

选择置换2(PC-2)
400px|right|PC-2
PC-21417112415328156211023191242681672720132415231374755304051453348444939563453464250362932
该置换从56位的密钥调度状态中取出48位的子密钥。

置换盒 (S盒)
S盒S1 x0000x  x0001x  x0010x  x0011x  x0100x  x0101x  x0110x  x0111x x1000x  x1001x  x1010x  x1011x  x1100x  x1101x  x1110x  x1111x 0yyyy01441312151183106125907 0yyyy10157414213110612119538 1yyyy04114813621115129731050 1yyyy11512824917511314100613S2 x0000x  x0001x  x0010x  x0011x  x0100x  x0101x  x0110x  x0111x x1000x  x1001x  x1010x  x1011x  x1100x  x1101x  x1110x  x1111x 0yyyy01518146113497213120510 0yyyy13134715281412011069115 1yyyy00147111041315812693215 1yyyy11381013154211671205149S3 x0000x  x0001x  x0010x  x0011x  x0100x  x0101x  x0110x  x0111x x1000x  x1001x  x1010x  x1011x  x1100x  x1101x  x1110x  x1111x 0yyyy01009146315511312711428 0yyyy11370934610285141211151 1yyyy01364981530111212510147 1yyyy11101306987415143115212S4 x0000x  x0001x  x0010x  x0011x  x0100x  x0101x  x0110x  x0111x x1000x  x1001x  x1010x  x1011x  x1100x  x1101x  x1110x  x1111x 0yyyy07131430691012851112415 0yyyy11381156150347212110149 1yyyy01069012117131513145284 1yyyy13150610113894511127214S5 x0000x  x0001x  x0010x  x0011x  x0100x  x0101x  x0110x  x0111x x1000x  x1001x  x1010x  x1011x  x1100x  x1101x  x1110x  x1111x 0yyyy02124171011685315130149 0yyyy11411212471315015103986 1yyyy04211110137815912563014 1yyyy11181271142136150910453S6 x0000x  x0001x  x0010x  x0011x  x0100x  x0101x  x0110x  x0111x x1000x  x1001x  x1010x  x1011x  x1100x  x1101x  x1110x  x1111x 0yyyy01211015926801334147511 0yyyy11015427129561131401138 1yyyy09141552812370410113116 1yyyy14321295151011141760813S7 x0000x  x0001x  x0010x  x0011x  x0100x  x0101x  x0110x  x0111x x1000x  x1001x  x1010x  x1011x  x1100x  x1101x  x1110x  x1111x 0yyyy04112141508133129751061 0yyyy11301174911014351221586 1yyyy01411131237141015680592 1yyyy16111381410795015142312S8 x0000x  x0001x  x0010x  x0011x  x0100x  x0101x  x0110x  x0111x x1000x  x1001x  x1010x  x1011x  x1100x  x1101x  x1110x  x1111x 0yyyy01328461511110931450127 0yyyy11151381037412561101492 1yyyy07114191214206101315358 1yyyy12114741081315129035611
上表列出了DES中使用的8个S盒。每个S盒将6位输入变为4位输出。给定输入后，输出行由外侧两位确定，列由内侧的4位确定，例如“011011”的输入的外侧位为“01”，内侧位为“1101”，而每张表的第一行为“00”，第一列为“0000”因此在S5中的对应输出为“1001”（十进制的9），即第2行，第14列（参见S盒）。

密钥调度过程中的移位
移位 回次 左移位数 11 21 32 42 52 62 72 82 91102112122132142152161
在子密钥生成完成前，密钥调度状态的每个半块都要向左循环移动特定的位，上表显示了移位的数量。

 参考文献 



Category:数据加密标准
Category:S盒