zoukankan      html  css  js  c++  java
  • DES算法详解

    时间:2021/12/20

    一.DES算法加密流程

    1.加密流程图

    如上图所示DES的明文和密文都以64bit为一个分组加解密使用同一个算法只是密钥的使用顺序是相反的密钥长度为56bit一共有16轮

    2.加密过程的公式化描述

    对于加密过程的每一轮上一轮的右边保持不变成为下一轮的左边上一轮的右边和轮密钥作为轮函数的输入轮函数的输出和上一轮的左边异或后作为下一轮的右边。(注意这里的上一轮指的是下标位i-1的一轮,下一轮指的是下标位i的一轮)

    3.子密钥生成算法

    子密钥生成开始的64bit密钥是实际的56bit密钥+8bit奇偶校验位置换选择1是先去掉了8bit奇偶校验位然后将剩下的56bit密钥按照置换表的位置重新进行排列在完成置换选择1后将56bit密钥分成左右各28bit然后左右分别循环左移需要注意不同轮数需要的移位位数是不同的有一个表格),需要注意的是左右两边是分开进行循环移位的然后合并左右两边去掉固定位置的比特然后根据置换选择2的表格重新进行排列排列后就可以得到该轮48bit的轮密钥

    4.轮函数(F函数)的实现过程

    上图是F函数内部的过程

    5.选择扩展置换E

    选择扩展置换F函数的输入是上一轮的右边和轮函数由于上一轮的右边为32bit而轮函数是48bit所以需要对上一轮的右边进行扩展从32bit扩展到48bit方法是将32bit写成8*4的矩阵然后增加两列也就是增加16bit增加两列的内容按照位置下标与相应位置的内容相同

    6.压缩替代(S盒)

    压缩替代S在经过选择扩展置换之后将得到48bit信息与48bit轮密钥进行异或异或后的信息作为S盒的输入将输入的48bit分成8组每组6bit然后每组的输出为4bit根据分组号选择相应的S将6bit中的第一个比特位和第六个比特位作为行号中间4个比特位作为列号选择一个16进制数字然后将输入的6bit数字替换成S盒中的4bit数字一个十六进制数字)。

    7.置换(P盒)

    置换P上一个S盒的输出32bit作为P盒的输入按照置换表中的顺序进行置换

    二.DES算法解密流程

    1.解密流程图

      

    2.解密算法的公式化表示

    解密算法下一轮的左边不变成为上一轮的右边下一轮的左边和轮密钥与加密使用轮密钥次序相反作为轮函数的输入轮函数的输出和下一轮的右边异或后作为上一轮的左边。(方便记忆与加密的左右是相反的

    三.DES的特点

    努力,向上,自律
  • 相关阅读:
    boost库常用库介绍
    boost介绍
    vs2019+win10配置boost库
    交互式多媒体图书平台的设计与实现
    47.全排列 2
    46.全排列
    基于VSCode的C++编程语言的构建调试环境搭建指南
    码农的自我修养之必备技能 学习笔记
    工程化编程实战callback接口学习笔记
    Erlang模块inet翻译
  • 原文地址:https://www.cnblogs.com/machi12/p/15712831.html
Copyright © 2011-2022 走看看