DES算法个人学习

第一步:创建16个子秘钥,每个长48比特

        1.首先,将64位秘钥根据表格PC-1进行变换,按位变换之后得到一个新秘钥

        2.将这个新秘钥拆为左右两部分,C0和D0,每半边各有28位

        3.创建块:对于相同定义的C0和D0,创建16个块Cn和Dn,每一对Cn和Dn都由前一对移位而来(用轮函数进行左移操作)。

        4.得到第n轮的秘钥Kn(1<=n<=16),具体做法是对拼合后的Cn和Dn用PC-2表进行代换,在代换前,子秘钥的位数为56位,但是在代换后,PC-2仅仅使用了48位。

第二步:加密数据的每个64位区块

        1.对应明文M,应用用一个初始变换IP。

        2.将初始变换IP分成两半,左半边32位的L0和右半边32位的R0。

        /*我们接下来的步骤就是将L0和R0进行16轮的迭代(重点是迭代中F函数的使用),迭代之后就会产生密文*/

        3.迭代公式:Ln=Rn-1

                             Rn=Ln-1(+) f(Rn-1,Kn)         (此处的(+)表示异或运算,这就是秘钥参与的部分)

        4.f函数如何工作:

                1):拓展本步的Rn-1,将其从32位拓展至48位,(这个过程叫做E变换)E变换的方法类似于PC-1变换,只不过有的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值