首页 > 其他分享 >应用密码学——分组密码

应用密码学——分组密码

时间:2024-03-22 19:56:34浏览次数:30  
标签:16 置换 密码 异或 分组 密钥 64 密码学

DES

算法描述

明文分组为64位,初始密钥64位,有效密钥56位,输出密文64位,16轮迭代的分组对称密码算法。由置换、替换、异或、循环移位组成。

流程图

image

加密过程

密钥生成

  1. 64位初始密钥先进行一个PC-1置换,目的是根据置换表去掉8位奇偶校验位,并打乱剩下的56位有效密钥的顺序。将这56位分成C0和D0
  2. 两部分分别根据LSi的值进行循环左移,左移后通过PC-2置换,然后合并作为48位子密钥。
  3. 整个des中一共会左移十六轮,第1、2、9、16次是左移一位,其他都是左移两位。

处理明文

  1. 初始置换IP
    先对明文(64位)进行一个初始置换IP,将明文分为L0、R0两个32位块。
    该过程并不会增加DES的安全性,但这种做法在16位和32位的总线出现之前将使得数据更容易加载到DES芯片中。
  2. 迭代
    进行16轮Feistel加密。每一轮都用一个从初始密钥导出的48位且每次不同的密钥(密钥生成过程如上文所述)。
    每一轮操作:
    (1)E扩展置换
    用E置换处理每一轮的R0。目的是把32位的R0扩展为48位,和密钥长度相同,以进行异或操作。
    置换过程就是:针对4比特×8组,把每一组的第一位放在上一组的最后一位后面,把每一组的最后一位放在下一组的第一位前面。
    置换之后的R与该轮密钥进行异或。
    (2)S盒替换
    把异或之后得到的48位送入通过8个内有不同替代表的S-盒,进行替代运算。每个S盒有6位输入4位输出,48位输入分为8个6比特的分组,一个分组对应一个S盒。每一个S盒中是4行16列的表,盒中的每一项都是一个4位的数。用6位输入的第一位和第六位确定所在行,中间四位确定列,对应一个格子里的值,即该组的替代运算结果。
    (3)P盒置换
    S盒代替运算的32位输出输入P盒进行置换。
    (1)(2)(3)加起来构成f函数
    (4)左右交换
    P盒置换的结果与64位分组L0异或,然后左、右半部分交换,开始下一轮。
    注意第16轮中,最后一步不进行左右交换,而是直接把左右合并。
  3. 初始IP逆置换
    第16轮结束后,左右合并的结果进行IP逆置换。最后得到密文。

标签:16,置换,密码,异或,分组,密钥,64,密码学
From: https://www.cnblogs.com/ww0809/p/18075599

相关文章

  • 忘记gitlab代码仓库登录密码,如何找回?
    一、密码要求必须是管理员或者自管理的Gitlab实例密码长度限制:Minimum:8charactersMaximum:128characters避免使用弱密码:例如gitlab、人名 二、密码找回方式2.1使用UI【适用普通账号】使用root账号,登录后,进入到管理中心。 搜索到用户后,点击编辑按钮 编辑态......
  • 【测试开发学习历程】MySQL分组查询与子查询 + MySQL表的联结操作
    目录1 MySQL分组查询与子查询1.1数据分组查询1.2过滤分组1.3分组结果排序1.4select语句中子句的执行顺序1.5子查询2 MySQL表的联结操作2.1关系表2.2表联结2.3笛卡尔积2.4内部联结2.5外联结2.6自联结2.7组合查询1 MySQL分组查询与子查询1.1......
  • 信息安全技术第2章——密码技术
    2.1密码学基础2.1.1密码学历史及密码系统组成密码系统的四个基本部分组成明文:要被发送的原文消息密码算法:由加密和解密的数学算法组成密文:明文经过加密算法加密之后得到的结果密钥:在加密和解密过程中使用的一系列比特串​​​​​​​2.1.2密码的作用实现信息的保密性......
  • C#上位机登录界面设计-账号注册、密码修改功能(三)
        C#上位机登录界面设计-界面跳转(二)是讲述的如何登入主界面,下一步是修改账号、密码及注册新的账号、密码。C#上位机登录界面设计-界面设计(一)C#上位机登录界面设计-界面跳转(二)一、窗体设计1、添加修改密码窗体    右键点击右侧解决方案下面的项目名,弹出......
  • Windows密码重置工具 有几款
    Windows密码重置工具:PCUnlocker:PCUnlocker是一款功能强大的Windows密码重置工具,可以帮助用户重置本地Windows密码或Microsoft账户密码。它支持Windows11/10/8/7/Vista/XP/2019/2016/2012/2008/2003/2000等操作系统。PCUnlocker是一款专业的Windows密码重置工具,它允许用户......
  • Ubuntu修改root密码
    背景:Ubuntu桌面版本在安装系统时需要创建一个普通用户,安装完成后进入系统也只能使用你创建的用户密码。我们不知道root的登录密码,这个时候需要重启系统进行root密码修改。Ubuntu怎么修改root密码呢?以下是详细的步骤:1、重启你的Ubuntu系统,然后在启动过程中按住Shift键,进入GRUB菜单......
  • 默认密码凭证备忘录工具
    在一个地方提供所有默认凭据,以在参与期间协助渗透测试人员,本文档包含从多个来源收集的多个产品默认登录名/密码。Motivation 赋予动机Onedocumentforthemostknownvendorsdefaultcredentials一个文档,用于最知名的供应商默认凭据Assistpentestersduringapentest/......
  • 密码加密|jsencrypt|md5|加密解密的两种方式
    一、md5npminstallmd5二、JSEncrypt2.1介绍JSEncrypt属于RSA加密,RSA加密算法是一种非对称加密算法;2.2使用安装:npminstalljsencrypt--dev封装工具:utils/jsencrypt.jsimportJSEncryptfrom'jsencrypt/bin/jsencrypt.min'//密钥对生成http://web.cha......
  • 【什么是Internet?网络边缘,网络核心,分组交换 vs 电路交换,接入网络和物理媒体】
    文章目录一、什么是Internet?1.从具体构成角度来看2.从服务角度来看二、网络结构1.网络边缘1.网络边缘:采用网络设施的面向连接服务1.1.目标:在端系统之间传输数据1.2.TCP服务2.网络边缘:采用网络设施的无连接服务2.1目标:在端系统之间传输数据2.2使用TCP的应用:2.网络核心......
  • python连接clickhouse-当密码中存在特殊字符比如@时处理方法
    我是使用clickhouse_sqlalchemy库来使用clickhous的。我的密码是:'Lovedan@971220'连接clickhous执行sql语句时候,会报错认证失败:Origexception:Code:516,e.displayText()=DB::Exception:default:Authenticationfailed:passwordisincorrectorthereisnouserwith......