Flask接口签名sign原理与实例代码浅析
338
2022-10-01
S-DES算法(S-DES算法对二进制就行加密)
S-DES算法的输入为一个8位的明文或者密文组和一个10位的密钥,输出是一个8位的密文或者明文组以下是S-DES所需的几个置换表IP=(2,6,3,1,4,8,5,7)IP^-1=(4,1,3,5,7,2,8,6)P4=(2,4,3,1)E/P=(4,1,2,3,2,3,4,1)两个s盒s0={1 0 3 2} s1={0 1 2 3}{3 2 1 0} {2 0 1 3}{0 2 1 3} {3 0 1 0}{3 1 3 2} {2 1 0 3}下面以一道例题为例子来讲解S-DES的加密解密过程已知明文m为 0 1 0 0 0 0 0 1,k1=1 0 1 0 0 1 0 0k2=0 1 0 0 0 0 1 1
加密过程
首先是初始置换
对明文 0 1 0 0 0 0 0 1做==IP置换==(2,6,3,1,4,8,5,7)得 m'= 1 0 0 0 0 1 0 0,接下来是标准的Feistel结构,共有两次循环
++第一次循环++
记左半(高位)为Lm=1 0 0 0,右半(低位)为Rm=0 1 0 0==对Rm做E/P扩展置换==(4,1,2,3,2,3,4,1)得 Rm'=0 0 1 0 1 0 0 0==Rm'与子密钥k1===1 0 1 0 0 1 0 0做==按位异或==得Rm'=1 0 0 0 1 1 0 0==Rm'左半==1000(10行00列,即2行0列)进入==s0盒替代选择==得00==右半==1100(10行10列,即2行2列)进入==s1盒替代选择==得01==组合==得Rm'=0001,==对Rm'做P4=(2,4,3,1)置换==得Rm'=0100==Rm'与Lm=1 0 0 0按位异或==得Lm'=1 1 0 0==Lm'与Rm(最开始的那个)组合==得到输出 1 1 0 0 0 1 0 0至此完成第一次循环==然后交换高低位,作为第二次循环的输入==,即0 1 0 0 1 1 0 0作为输入开始++第二次的循环++记左半为Ln=0 1 0 0,右半为Rn=1 1 0 0==对Rn做E/P=(4,1,2,3,2,3,4,1)扩展置换==得Rn'=0 1 1 0 1 0 0 1,==Rn'与子密钥k2===0 1 0 0 0 0 1 1做==按位异或==得Rn'=0 0 1 0 1 0 1 0,Rn'左半0010(00行01列,即0行1列)进入s0盒替代选择得00Rn'右半1010(10行01列,即2行1列)进入s盒替代选择得 00,组合得Rn'=0000对Rn’做P4置换(2,4,3,1),得Rn’=0000Rn’与Ln=0 1 0 0按位异或,得Ln’=0100Ln’与Rn(最开始的那个Rn=1 1 0 0)组合得到输出 0 1 0 0 1 1 0 0至此完成第二次循环最后进行逆初始置换对上面的输出0 1 0 0 1 1 0 0做IP^-1=(4,1,3,5,7,2,8,6)置换得到密文c=0 0 0 1 0 1 0 1OK,到这里就完成了将明文加密为密文,S-DES加密结束.
解密过程
下面开始解密,解密过程与加密基本一致,就是==密钥使用顺序是相反的,第一次循环使用K2,第二次循环使用K1==首先还是初始置换对密文c=0 0 0 1 0 1 0 1做IP=(2,6,3,1,4,8,5,7)置换,得c’=0 1 0 0 1 1 0 0Feistel密码结构第一次循环记左半(高位)为Lc=0 1 0 0,右半(低位)为Rc=1 1 0 0对Rc做E/P=(4,1,2,3,2,3,4,1)扩展置换,得Rc’=0 1 1 0 1 0 0 1Rc’与子密钥k2=0 1 0 0 0 0 1 1按位异或,得Rc’=0 0 1 0 1 0 1 0Rc’左半0010(00行01列,即0行1列)进入S0盒替代选择得00,右半1010(10行01列,即2行1列)进入S1盒替代选择的00,组合后得Rc’=0000对Rc’做P4=(2,4,3,1)置换,得Rc’=0000Rc’与Lc=1110按位异或,得Lc’=0100Lc’与Rc(最开始的那个Rc=1100)组合得到输出 0 1 0 0 1 1 0 0至此完成第一次循环然后交换高低位,作为第二次循环的输入,即11000100作为输入开始第二次循环记左半为Ln=1100,右半为Rn=0100对Rn做E/P=(4,1,2,3,2,3,4,1)扩展置换,得Rn’=00101000Rn’与子密钥k1=1 0 1 0 0 1 0 0按位异或,得Rn’=10001100Rn’左半1000进入S0盒替代选择得00,右半1100进入S1盒替代选择得01,组合后得Rn’=0001对Rn’做P4=(2,4,3,1)置换,得Rn’=0100Rn’与Ln=1100按位异或,得Ln’=1000Ln’与Rn(最开始的那个Rn)组合得到输出10000100至此完成第二次循环最后进行逆初始置换(4,1,3,5,7,2,8,6)得到明文m=01000001这样就完成的S-DES的解密
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~