想学习DES算法的原理,网上看了几篇文章,大致了解了算法的过程
学习过程中,有两点疑惑:
1.为什么解密和加密可以使用一样的过程,仅仅子密钥顺序相反?
网上说是Feistel网络的特点,似懂非懂,没深究
2.能不能自己设计置换表?
初始置换、逆置换、子密钥相关的置换表都好懂、好改,但是S盒就不知道是什么规律,一时不知如何改
花了几天实现了一遍DES算法之后,尝试随便改了改S盒,发现加密结果变了,但是不影响解密
看来S盒可以随便改?
分析了一遍后,发现的确是,这是Feistel网络的特性,只要f函数对于一样的输入,有一样的输出,就一定能解密
S盒可以随便改,但是安全性就不一样了
以下是分析过程:
这里本来想放张网上找的Feistel网络的图,自己找找,相关证明也很多