兄弟连区块链教程区块链背后的信息安全2DES、3DES加密算法原理二
Feistel轮函数 每次Feistel轮函数内部,均经过4种运算,即: 1、扩展置换:右侧32位做扩展置换,扩展置换将32位输入扩展成为48位输出,使得扩展后输出数据长度与48位子密钥等长。 2、异或运算:右侧32位扩展置换为48位后,与48位子密钥做异或运算。 3、S盒置换:将异或运算后的48位结果,分成8个6位的块,每块通过S盒置换产生4位的输出,8个块S盒置换后组成32位的输出。S盒置换的过程为:6位中取第1位和第6位组成行号,剩余第2、3、4、5位组成列号,从S盒置换表中取出相应行、列的十进制数,并转化为4位二进制数,即为S盒输出。 4、P盒置换:S盒置换后的32位输出数据,进行P盒置换,仍然输出为32位数据。 go标准库中DES Feistel轮函数代码如下: func feistel(right uint32, key uint64) (result uint32) { //右侧32位扩展置换为48位,并与48位子密钥做异或运算 sBoxLocations := key ^ expandBlock(right) var sBoxResult uint32 for i :=...



