当前位置: 首页 > news >正文

DES加密原理

 

 

DES加密算法综合运用了置换、代替、代数等多种密码技术,具有设计精

巧、实现容易、使用方便等特点。DES加密算法的明文、密文和密钥的分组长度 都是64位,详细的DES加密算法结构如图6-10所示。

 

 

 

 

 

17fd7762cad24d46b3a5b06cf4e02744.png

图6-10    DES加密算法结构图

DES加密过程如下所示:

1)64位密钥经子密钥产生算法产生16个48位子密钥。

2)64位明文首先经过初始置换IP(Initial Pennutation),将数据打乱重新排 列,并分成左右两边,各32位序列。

3)加密函数f实现子密钥K1对K0的加密,结果为32位的数据组f(R0, K1)。f(R0 ,K1)再与L0的模2相加,又得到一个32位的数组L0⊕f(R0,

K1),以L0⊕f(R0 ,K1)作为第二次加密迭代的R1 ,以R0作为第二次加密迭代

 

 

 

 

的Ll ,第二次加密迭代至第十六次加密迭代分别用子密钥K2 , ⅆ , K16进行,其 过程与第一次加密迭代相同。

4)第16次加密迭代结束后,产生一个64位的数据组。以其左边32位作为

R16 ,右边32位作为L16 ,两者合并后经过逆初始置换IP-1将数据重新排列,便得 到64位密文。至此,加密结束。

64位密钥经过置换选择1 、循环左移、置换选择2等变换,产生16个48位长的 子密钥。子密钥的产生过程如图6-11所示。

 

 

 

 

 

07749b39c15b485aa2308a8ec2989836.png

图6-11    子密钥产生流程图

具体方法如下:

·置换选择1:64位的密钥分为8个字节,每个字节的前7位是真正的密钥位,

 

 

 

 

 

第8位作为奇偶校验位,将64位密钥中去掉8个奇偶校验位,并将其余56位密钥位 打乱重排,且将前28位作为C0 ,后28位作为D0。

·置换选择2:将Ci和Di合并成一个56位的中间数据,从中选择出一个48位的 子密钥Ki。

由于DES的运算是对合运算,所以解密和加密可共用同一个运算,只是子密 钥使用的顺序不同。把64位密文当作明文输入,而且第一次解密迭代使用子密钥 K16 ,第二次解密迭代使用子密钥K15 ,依次类推,第十六次解密迭代使用子密钥 K1 ,最后输出便是64位明文。

 

 

http://www.lryc.cn/news/292892.html

相关文章:

  • react 之 useCallback
  • OfficeWeb365 Readfile 任意文件读取漏洞复现
  • UnityShader(十三)Unity内置的函数
  • 【开源】基于Qt5的ROS1/ROS2人机交互软件(支持地图编辑/多点导航)
  • Spring和SpringBoot的区别是什么
  • 布局技巧及CSS初始化
  • excel怎么设置密码?轻松保护您的工作表
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TimePicker组件
  • Springboot集成Camunda并完成一条流程实例
  • 宠物用品/宠物自动饮水机方案
  • git小白进阶之路
  • 哈希表——C++
  • LabVIEW叶片厚度远程监控
  • el-table动态合并
  • 【DevOps】产品需求文档(PRD)与常见原型软件
  • 【QT+QGIS跨平台编译】之十八:【Expat+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 20240203
  • 【Spark实践6】特征转换FeatureTransformers实践Scala版--补充算子
  • 【知识点】设计模式
  • WPS WORD 宏导出高亮文本
  • python 基础知识点(蓝桥杯python科目个人复习计划32)
  • (算法二)滑动窗口
  • 【Go语言成长之路】Hello Go
  • 大数据应用开发3-Scala笔记1
  • android 网络拦截器统一处理请求参数和返回值加解密实现
  • Jmeter直连mysql数据库教程
  • 2024美赛数学建模B题思路分析 - 搜索潜水器
  • Tomcat在Java web的应用
  • Python爬虫某云免费音乐——多线程批量下载
  • Python实现TCP和UDP通信