为了账号安全,请及时绑定邮箱和手机立即绑定
  • PBE加密算法

    查看全部
  • 常用对称加密算法:

    DES

    AES

    PBE

    IDEA

    查看全部
  • 对称加密的特点:

    加密秘钥=解密秘钥

    查看全部
  • PBE算法流程

    查看全部
  • AES算法流程

    查看全部
  • DES算法流程

    查看全部
  • PBE>AES>3DES>DES

    查看全部
  • PBE = MD5 + DES

    查看全部
  • AES是DES的高级替代

    查看全部
  • fdasfdsfdfa

    查看全部
  • aaaaa

    查看全部
  • 对称加密算法

    查看全部
  • https://img1.sycdn.imooc.com//5c20e18e0001637d06830298.jpg

    。。。。。

    查看全部
  • 之前的笔记讲解了key 接下来是input的64bit. 为了方便 我还是把原理图放出来吧
    https://img1.sycdn.imooc.com//5b5a0c3600015b1d09200545.jpg
    64bit input会经过IP表格的操作 拆分成L和R两个32位的串 其实就是对号入座而已 并不难理解

    例如:Plaintext=123456ABCD132536

    IP之后就是L0=14A7D678 R0=18CA18AD(运算都是以16进制的原文对应的二进制为基础进行运算)

    https://img1.sycdn.imooc.com//5b5a0c740001db4d03780280.jpg

    https://img1.sycdn.imooc.com//5b5a0c750001bed904640281.jpg

    之后L的操作比较少  主要集中在R上面 然后R的所有操作有个名词 Feistel function(名字好像是这个) 就是指的蓝色区域
    接下来是Expansion function 这个函数的主要操作就是把32位的R扩展成48位
    例如AABBCCDD 32bit的16进制序列
    1010(A) 1010(A)...... 1101(D)
    我们要做的就是首尾相连  例如第一个A就会扩展成110101(第一位是D的最后一位 最后一位是第二个A的第一位)    第二个A:010101(第一位是A的最后一位 最后一位是B的第一位)
    以上操作后我们就会得到48bit的R  然后和key进行XOR运算 这个大家都懂 就不说了

    轮到S-box的48变32
    https://img1.sycdn.imooc.com//5b5a0fd900013f6c09310179.jpg
    我们继续用上面的例子110101  加粗的1010为column 11为row 在box中找到对应的10进制数字再换成16进制即可 这时结果是3:0011  或者参考图中例子也可以

    这样就从6*8 变成4*8的32bit
    https://img1.sycdn.imooc.com//5b5a10ec0001768702600286.jpg
    然后经过feistel最后的P表格操作  得出的新序列R再次和之前的L进行XOR运算  从而得出R1,即第一次变换后的R1(按照上面的例子来算的话 R1=5A78E394)
    从原理图可以知道L的下一个序列就是原来的R 意思就是L1=R0 L2=R1 如此类推 完成16次循环.

    https://img1.sycdn.imooc.com//5b5a124d0001027104250270.jpg
    最后的最后 IP-1表格操作,对号入座 得到最终的64bit(L+R)
    到此DES的大概流程和原理就完了 DES的流程也不算难理解,多加思考还是能明白的....只是网上好像还比较少完整的解析,所以就无聊地写了一下.....笔记纯手打 可能会有错误或者理解不到位的地方  欢迎指正讨论 还有不懂的地方可以私信我 谢谢 希望大家学习愉快~~

    查看全部
  • 课程中没有讲到DES的原理 我相信点进来的同学们应该也不仅仅满足于API的使用吧 而且知道了原理后我相信对理解代码肯定也会有更多的帮助 我就写成笔记分享一下,顺便当作复习 希望能帮到大家.
    对称加密算法也分成两类:Stream和Block   (大家熟知的DES AES都属于Block)

    https://img1.sycdn.imooc.com//5b59ff5500015b1d09200545.jpg
    这个就是DES原理图 我从某个课件中截取下来的 首先从Key开始吧

    Key:为什么是64bit呢?据说好像是发明的那些大佬们定下的标准- -
    64bit能够表示16个16进制的数(4个二进制表示一个16进制),所以这个key input的例子就可以是这样:AABB09182736CCDD
    然后我们要做的就是将他变成二进制 例如
    1 0 1 0(A) 1 0 1 0(A)
    1 0 1 1(B) 1 0 1 1(B)

    ............

    如此类推写成一个8*8的表格 并且从1-64 第一行开始左往右这样编号
    接下来会经过一个PC-1的表,这个PC-1的操作就是将8,16,24,32,40,48,56,64这8个位上的数字去除
    从而key序列就只有56位了

    https://img1.sycdn.imooc.com//5b5a063500011ff703940316.jpg

    https://img1.sycdn.imooc.com//5b5a063600017eac03880422.jpg

    然后将原来64位的序列分成C D两个串 按照上面的号码对号入座重新组成C D
    例如原57 变成C的1 49变成C的2 如此类推  

    接下来的操作就是分布左移两个字符串C D

    https://img1.sycdn.imooc.com//5b5a0784000195b207120118.jpg
    理论上key round要完成16次 所以是1-16 每个round就要左移对应的次数.
    例如6th round:1+1+2+2+2+2=10 所以C 和 D就要左移10次  每个round都要 所以每个round的key都是不一样的..
    移动完之后只需要重新C+D合起来 这时仍然是56位 再经过PC-2表的操作 相应对号入座就会得出一个48位的key.
    https://img1.sycdn.imooc.com//5b5a08a200013ccd02560273.jpg

    Key generation的步骤就是这样 每个round都会重新生成key 循环16次结束
    以上笔记纯手打  可能会有错误的地方 欢迎指正或者补充... 谢谢

    查看全部

举报

0/150
提交
取消
课程须知
1、需具备Java面向对象的基础 2、需学习《JAVA实现Base64加密》课程的第一章,了解Java加解密的基础知识。奉上链接:http://www.imooc.com/learn/285
老师告诉你能学到什么?
1、掌握对称加密算法在Java中的实现 2、了解对称加密算法的应用场景

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!