S-DES 算法详解 其实跟上一篇一样,这还是网络安全的作业… S-DES 是DES 算法的简化版,并没有什么实际使用的价值,只用于教学来理解DES算法的加密方法,这篇文章就是按照S-DES 的算法来实际加密和解密的一段2 进制数,演示了加密的运算过程
下面从准备知识开始 先讲一下置换,举例说明,对”ABCDEFGH”做一下”82641753″置换的结果就是”HBFDAGEC”,这样就能看懂是怎么置换的了吧
然后是循环移位,继续举例,”ABCDEFGH”循环左移 2 位结果就是”CDEFGHAB”
还有个 S 盒的替代选择,具体到 S-DES 来说就是输入的四位数”ABCD”在 S 盒中找第 AD 行 BC 列的数字作为输出,比如 0101 输入 S0(见下)的话就是第 1(01)行第2(10)列(0-3 行,0-3 列),输出为 1 即 01,再比如 1001 输入 S0 的话就是第 3(11)行第 0(00)列,输出为 3 即 11
最后是按位异或,举例的话 1^1=0,1^0=1,0^1=1,0^0=0,1100^1010=0110,其实这个大家都懂吧
好了,准备知识就这么多,下面开始正题: S-DES 算法的输入是一个 8 位的明文或者密文组和一个 10 位的密钥,输出是一个 8 位的密文或者明文组
以下是S-DES 所需的几个置换表 P10 {3,5,2,7,4,10,1,9,8,6} P8 {6,3,7,4,8,5,10,9} 注意这个置换选择输入 10 位输出 8 位 P4 {2,4,3,1} IP {2,6,3,1,4,8,5,7} IPI {4,1,3,5,7,2,8,6} EP {4,1,2,3,2,3,4,1} 注意这个是扩展置换,输入 4 位输出 8 位 以下是两个 S 盒 S0: {1,0,3,2}, {3,2,1,0}, {0,2,1