DES算法程序逆向分析
一、DES算法简介
DES算法是对称加密算法中的一种,是一种常用的加密算法。
二、DES算法加密过程
1、基本结构
DES算法是一种分组加密算法,一次加密64bit明文,通过64位的初始密钥生成16个48位的子密钥,将明文进行初始置换后分为左右两组,每组32位。进行迭代加密的时候,将右32位作为下一轮迭代的左32位,而左32位与密钥进行加密以后成为下一轮迭代的右32位。设初始明文为L0R0,经过16轮迭代后变成L16R16,逆转为R16L16,再进行最终置换,获得最后的密文。
2、密钥生成
其中每轮当中的密钥都是由初始密钥生成的,初始密钥先要进行置换选择1,通过置换选择1将密钥变成56位,然后分为左右两个部分,然后进行循环左移,循环左移的位数是确定的,按顺序分别是1122222212222221,每轮左移产生一个密钥,分别参与各轮迭代;经过左移的密钥再通过一个置换选择2,将56位的密钥变成48位,和R进入F函数进行加密
3、F函数
接下来是F函数
F函数将R和密钥作为输入,然后输出32位;F函数先对R进行一个E扩展置换,将32位扩展至48位,然后和48位的密钥进行异或运算,将结果放进S盒进行计算,输出32位,最后进行一个P置换,位数不变,作为F函数的输出
S盒的计算方法如下:将48位分成8段,每段6位,将各段中首尾两位和中间四位作为S盒的“横坐标”和“纵坐标”得到对应坐标处的数字并变成4位的二进制数字,这样就完成了从48位到32位的转换
(以上图片全都找自百度百科,侵也不删(doge))
二、DES算法程序逆向分析
1.main函数的结构
用IDA打开desnc.exe,点开main函数