• 现代对称密码


    乘积密码

    因为语言特性,用代替和置换是不安全的,可以考虑用多次的加密增强密码强度。多次加密想要提高密码强度,要求多次加密不能成为一个群,那么加密就可以被重复并且组合复杂度会增加。

    分组密码

    分组密码就是把明文分组后进行一一映射。
    在这里插入图片描述
    对于n位的分组密码,密钥的大小是2^n*n的,代价太大,因此需要一种算法,可以在密钥的控制下,从一个足够大的代替子集中简单迅速的找到一个代替。
    这要求:分组足够长,密钥量(子集)足够大,确定密钥的算法要足够复杂以抵抗攻击。

    feistel分组加密算法

    分组加密密码在n小的时候和代替变换没多少差别,大的情况下密钥太大,Feistel分组加密结构使用代替和置换来产生一个类似分组加密的效果。

    在这里插入图片描述

    数据加密标准DES

    在这里插入图片描述
    显而易见的DES采用了feistel结构,其中扩展,子钥异或和压缩共同组成feistel的F加密函数。
    DES的子密钥产生
    在这里插入图片描述
    DES的子密钥通过原始密钥的循环位移来产生,而明文经过多轮的迭代加密,其中经过扩展和压缩后,一个明文可以同时影响多个密文,这就是雪崩效应。

    DES加密不是群,因为DES就是一个置换,置换有2^64 种,而一种DES密钥确定了一个置换,只有2^56种。因此DES不能和所有置换一一映射,直观上看DES不是群。这个结论在1992年被证明。

    因为DES不是群,因此也存在二重,三重等DES加密算法

    AES加密算法

    在这里插入图片描述

    分组密码操作方式

    ECB电码本形式
    在这里插入图片描述
    可并行,简单,差错控制在一个分组内

    CBC密码分组链接
    在这里插入图片描述
    密文作为下一组的密钥进行异或,不能并行,密文块损坏意味着两个明文块损坏

    CFB密码反馈,实际上是流密码
    在这里插入图片描述
    密文反馈给移位寄存器,和原始密钥共同产生下一轮的密钥,和CBC基本上是实现方式存在一些差异。

    OFB输出反馈
    在这里插入图片描述
    和CFB类似,但是是密钥反馈

    Counter计数器形式,实际上是流密码
    在这里插入图片描述
    类似,但是由计数器共同组成密钥

    最后几种就是密钥产生方法的区别

  • 相关阅读:
    Error: Google Play requires that apps target API level 26 or higher. 两种解决办法
    MySQL中json类型,你使用过吗
    web前端期末大作业:网站设计与实现——咖啡网站HTML+CSS+JavaScript
    tf.compat.v1.global_variables
    JVM调优(jvisualvm,jmap、jstack、jinfo、jstat)(思维导图)
    22.11.18打卡 [传智杯 #3 初赛] 部分题
    [附源码]计算机毕业设计JAVASSM归途中流浪动物收容与领养管理系统
    git 使用说明
    CentOS7安装Xrdp以便Windows远程桌面连接
    python学习05协程_2
  • 原文地址:https://blog.csdn.net/qq_36993218/article/details/127937527