全球旧事资料 分类
前28位移动memcpydatadatatime28timememcpydata28timetemptime后28位移动memcpydata28data28time28timememcpydata56timetemptimetimeTime1时,先将data数组中的的第1位存入中间数组temp中,然后将(228)位存入(127)位中,最后将temp中的data0存入data27就实现向左循环一位。Time2时过程雷同。DES_ROLchardata56i
ttime
316
void
IP置换
DES_IP_Tra
sformchardata64i
tc
tchartemp64forc
t0c
t64c
ttempc
tdataIP_Tablec
tmemcpydatatemp64
第6页共10页
f每次将IP置换数组中对应位数的data数组值存入temp中,然后将temp数组中的数存入data中就实现了IP置换。
317
voidi
tc
t
IP逆置换
DES_IP_1_Tra
sformchardata64
chartemp64forc
t0c
t64c
ttempc
tdataIP_1_Tablec
tmemcpydatatemp64与IP置换雷同,只不过对应的置换数组互逆。
318扩展置换
voidDES_E_Tra
sformchardata48i
tc
tchartemp48forc
t0c
t48c
ttempc
tdataE_Tablec
tmemcpydatatemp48方法雷同IP置换,只不过注意扩展之后变为48位的,其中有16位被重用。
第7页共10页
f319
voidi
tc
t
S盒置换
DES_SBOXchardata48
i
tli
erowoutputi
tcur1cur2forc
t0c
t8c
tcur1c
t6cur2c
t2计算在S盒中的行与列li
edatacur11datacur15rowdatacur113datacur122datacur131datacur14outputSc
tli
erow化为2进制datacur2output0X083datacur21output0X042datacur22output0X021datacur23output0x01S盒的6位输入的第一和最后一个比特构成一个2位二进制数,用来选择S盒中的4行所定义的四种替代的一种,中间的4个比特则选出一列。被上诉行和列交叉所选择的单元的十进制数转换为一个4位二进制表示作为输出。函数中通过对应数组对应位的左移实现组成新2进制数。并且计算出了对应的行值跟列值。
第8页共10页
f3110加密
voidDES_E
cryptcharplai
FilecharkeyFilecharcipherFileFILEplai
cipherkeyi
tcou
tcharplai
Block8cipherBlock8keyBlock8bKey64subKeys1648ifplai
fope
plai
File
好听全球资料 返回顶部