DES算法

本文详细介绍了DES算法流程,包括生成16个48位子密钥的过程,如置换选择1、循环左右移、置位选择2等。还阐述了初始置换IP、16轮Feistel结构迭代,其中轮函数F包含扩展置换E、S盒代换、置换运算P,最后进行逆初始置换IP - 1。同时提及了Feistel和SP结构。

算法结构

  1. Feistel结构
    • 16轮迭代
    • 将Ri-1用函数f运算一下
    • f(Ri-1)和Li-1异或一下
    • 将上一步的结果作为下一轮的右侧,即Ri
    • 将Ri-1变成下一轮的左侧(即Li)
  2. SP结构

DES算法流程:

  1. 生成16个48位的子密钥
    • 总结:64bit->56bit->48bit
    • 置换选择1
      • 给定:一张行7列8的置位表+16个十六进制数的初始密钥
      • 以下类似于初始置换IP的过程
        • 将密钥化成二进制
        • 根据置位表,将数字填入其中
      • 得到28bit的C0和D0
    • 切开,得到C0(28bit)和D0(28bit)
    • 将C0和D0分别循环左移和右移
      • 会有一张循环左移位数表:第一列为迭代次数,第二列为循环左移的位数
      • 因为需要迭代16轮,所以每一轮会给出迭代次数
      • 循环左移的意思就是把脑袋给到腚
    • 得到28bit的C1和D1
    • 置位选择2
      • 非常类似于置位选择1
      • 把28bit的C1和D1放到一起变成56位
      • 然后根据置位表,再去掉八位
      • 最终生成48bit的一个密钥
    • 循环左右移2
      • 输入:C1&D1+循环移位表中的迭代次数2的值
      • .........(循环16次得到16个48bit的密钥)
  2. 初始置换IP
    • 和生成密钥同时进行
    • 给定:一张8*8的置位表+16个十六进制数的明文
    • 将明文全部转换成二进制数,16*4共64位
    • 将转换好的明文依据置位表中的顺序重排
    • 将填好的表一份为二
    • 上半部分为L0,下半部分为R0
  3. 16轮feistel结构迭代
    • F轮函数结构框架:将明文进行完初始置换IP后,进入轮函数F
      • 输入:32位的A
      • 扩展置换E
        1. 经过选择运算E得到48位的中间结果
        2. 将48位的中间结果和48位的子密钥Ki进行异或运算
      • S盒代换
      • 置换运算P
      • 输出:32位的F(Ai)
    • 扩展置换E
      • 在DES算法的第二步——初始置换IP后是不是得到了两个32位的L0和R0?
      • 根据行4列8的扩展置换E将R0(或L0)变成48位的E(R0)
      • 在DES算法的第一步——生成密钥的过程中是不是得到了16个密钥?密钥是多少位的?
      • 将E(R0)与密钥进行异或
      • 至此,原来32位的R0变成了48位,故称为扩展置换E
      • 输出:48位——E(R0)^K1
    • S盒代换
      • 输入:48位
      • S盒代换给定了一张S盒矩阵(行4列16)
      • 48 = 6*8比如011001 011100 ....
      • 将8个数字的首尾作为行,中间4个数作为列,输入矩阵
      • 比如011001 -> (01,1100) -> (1,12)
      • 那就看矩阵中(1,12)的数字是什么?比如是9,那么输出就是1001
      • 那最终我们得到了8个4位的数字
      • 输出:32位——S(E(R0)^K1)
    • 置换P
      • 输入:32位
      • 给定一张置换表行4列8
      • 置换
      • 输出:32位 P(S(E(R0)^K1)),至此,f(Ro,k1)已经全部完成
    • 逆初始置换IP-1
      • 16轮迭代全部完成之后,得到了64bit的矩阵
      • 需要

转载于:https://www.cnblogs.com/huangming-zzz/p/10810537.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算全局勘探,加减运算局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了整的Python代码实现,结合Rastrigin函数进测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值