DES原理、使用3DES替换DES(3DES加解密速度只有DES的1/3,为什么不使用2DES?)

简介: DES原理、使用3DES替换DES(3DES加解密速度只有DES的1/3,为什么不使用2DES?)

一、DES原理

image.png

二、为什么用3DES而不用2DES
  大体过程:明文P,密文C,加密过程E,解密D;

  如果用暴力破解,时间复杂度是256,对于对称密钥加密,要增加安全性,最好是增加密钥的长度,于是采用多次加密的方法,但是为何采用3DES,却没有2DES?

如果使用2DES:

加密:P- - - E过程(k1)- - - 得到中间值X- - - E过程(k2)- - - C;
解密:C- - - D过程(k2)- - -   X   - - - D过程(k1)- - -P;

  这个原理,看似有效的密钥长度为56*2,其实不然。如果敌人获得的明文P和密文C,那么只要:

    x1=E(k1,P);
    x2=D(k2,C);

  使用暴力破解,使x1=x2,即获得中间值x,这样造成密钥k1,k2泄漏,而这种方法需要时间复杂度是2*256 = 257,跟DES比差不太多。

但是使用3DES:

加密:P- - - E过程(k1)- - - D过程(k2)- - - E过程(k3)- - - C;
解密:C - - - D过程(k3) - - - E过程(k2) - - - D过程(k1)- - - P;

这样即使获得P、C,破解k1,k2,k3也十分困难。所以采用3DES!

相关文章
|
存储 Rust 并行计算
【密码学】一文读懂XTS模式
这篇文章的灵感来源于我偶然翻到的一个某U盘有关磁盘加密的一个介绍(这一篇不是广告蛤), 然后发现这个模式我之前还真没遇到过,因此呢,就学习了一下,就出来了这一篇文章。
7786 0
【密码学】一文读懂XTS模式
|
Ubuntu Docker 容器
本地wsl的Ubuntu安装docker,不使用docker桌面版
本文提供了在WSL的Ubuntu环境中安装Docker引擎的步骤,包括安装引擎、配置iptables以及启动Docker服务。
1014 2
|
Java 数据库连接 测试技术
SpringBoot 3.3.2 + ShardingSphere 5.5 + Mybatis-plus:轻松搞定数据加解密,支持字段级!
【8月更文挑战第30天】在数据驱动的时代,数据的安全性显得尤为重要。特别是在涉及用户隐私或敏感信息的应用中,如何确保数据在存储和传输过程中的安全性成为了开发者必须面对的问题。今天,我们将围绕SpringBoot 3.3.2、ShardingSphere 5.5以及Mybatis-plus的组合,探讨如何轻松实现数据的字段级加解密,为数据安全保驾护航。
1102 1
|
存储 Shell 网络安全
|
C# Windows
C# 串口关闭时主界面卡死原因分析
串口程序关闭导致界面卡死的原因是主线程与辅助线程间的死锁。问题出在`SerialPort.Close()`方法与`DataReceived`事件处理程序。`DataReceived`事件在`lock (stream)`块中执行,而`Close()`方法会关闭`SerialStream`并锁定自身。当辅助线程处理数据并尝试更新UI时,UI线程因调用`Close()`被阻塞,造成死锁。解决办法是让`DataReceived`事件处理程序使用`this.BeginInvoke()`异步更新界面,避免等待UI线程,从而防止死锁。
|
iOS开发 MacOS Python
【Python】已解决:(Pycharm切换Python版本后报错)No Python at “C:\Program Files\Python39\python.exe”
【Python】已解决:(Pycharm切换Python版本后报错)No Python at “C:\Program Files\Python39\python.exe”
1277 0
【Python】已解决:(Pycharm切换Python版本后报错)No Python at “C:\Program Files\Python39\python.exe”
|
Ubuntu NoSQL Linux
在Ubuntu上用Qemu模拟ARM版本的Fedora39
在Ubuntu上用Qemu模拟ARM版本的Fedora39
|
机器学习/深度学习 并行计算 编译器
AVX 指令集简介及其与 SSE 的对比
本文介绍了AVX指令集在高性能计算中的重要性,它是Intel于2011年推出的一种SIMD技术,扩展了SSE指令集,将向量宽度增至256位,支持更多数据类型和浮点精度控制。主要差异包括向量宽度、数据类型扩展、指令集增加和精度控制。文中通过C代码示例展示了如何使用AVX进行向量加法。AVX对科学计算、图像处理和机器学习等领域提供了显著的性能提升。编译时需确保编译器支持AVX标志。
|
API 开发工具 C语言
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
1744 0
|
Linux
在Linux系统中,`touch`命令
在Linux系统中,`touch`命令
423 1