深入理解DES算法:原理、实现与应用
title: 深入理解DES算法:原理、实现与应用
date: 2024/4/14 21:30:21
updated: 2024/4/14 21:30:21
tags:
- DES加密
- 对称加密
- 分组密码
- 密钥管理
- S盒P盒
- 安全性分析
- 替代算法
DES算法简介
历史
DES(Data Encryption Standard)算法是由IBM研发,并于1977年被美国国家标准局(NBS,现NIST)确定为数据加密标准。
设计目的
DES算法的设计目的是提供一种高度安全的对称加密算法,用于保护敏感信息的机密性。
DES算法基本原理
DES算法采用分组密码,将明文分成64位一组,密钥长度为56位。其基本原理是通过一系列的置换、替换和异或运算,利用密钥对数据进行加密和解密。
数据处理过程
-
初始置换(Initial Permutation) :
- 将64位明文按照固定的顺序重新排列,得到L0和R0两部分,每部分32位。
-
轮函数(Round Function) :
- 包括扩展置换、与轮密钥异或、S盒替换和P盒置换等操作。
-
轮密钥生成(Key Schedule) :
- 根据56位初始密钥生成16个48位轮密钥,用于每一轮的加密过程。
-
16轮加密(16 Rounds Encryption) :
- 将明文经过初始置换后的L0和R0部分分别进行16轮的加密处理,每轮包括轮函数和密钥混合。
-
逆初始置换(Final Permutation) :
- 将经过16轮加密后的数据按照逆序的方式重新排列,得到最终的64位密文数据。
DES算法的安全性受到挑战,主要是因为56位密钥长度较短,易受到暴力破解攻击。因此,现在通常不推荐使用DES算法来加密敏感数据,而是选择更安全的加密算法,如AES算法。
DES算法的详细解析
DES算法的加密过程涉及多个步骤,下面将详细探讨每个步骤:
1. 初始数据置换(Initial Permutation, IP)
- 目的:打乱明文的位顺序,使得明文的统计特性和模式被隐藏。
- 过程:64位的明文块按照IP表定义的规则进行置换,IP表是一个固定的置换规则,决定了明文的哪些位应该被移动到什么位置。
2. 密钥生成(Key Schedule)
-
目的:从56位的初始密钥生成16个48位的轮密钥。
-
过程:
- PC-1置换:初始密钥首先通过PC-1置换,将密钥分为左右两部分,每部分28位。
- 循环左移:对左右两部分进行循环左移,左移的位数由轮数决定。
- PC-2置换:将循环左移后的两部分合并,并通过PC-2置换生成48位的轮密钥。
3. 轮函数(Round Function)
-
目的:通过一系列复杂的操作增强加密效果。
-
过程:DES算法包含16轮相同的操作,每轮操作如下:
- 扩展置换(E-box) :将Rn(右32位)通过E盒扩展到48位。
- 与轮密钥异或:将扩展后的48位数据与对应的轮密钥进行异或运算。
- S盒替换(S-boxes) :将异或后的数据分为8个6位的块,每个块通过对应的S盒进行替换,S盒将6位输入映射为4位输出。
- P盒置换(P-box) :将S盒替换后的32位数据通过P盒进行置换,P盒定义了32位输出的新顺序。
4. 轮密钥的使用
- 在每一轮中,轮密钥与扩展后的Rn部分进行异或运算,然后进行S盒替换和P盒置换。
5. 左右交换
- 在每一轮运算后,将Ln和Rn交换,Rn成为下一轮的Ln。
6. 逆初始置换(Final Permutation, FP)
- 目的:完成加密过程,产生最终的密文。
- 过程:将第16轮的输出(R16L16)按照FP表定义的规则进行置换,FP表是IP表的逆过程。
通过上述步骤,DES算法将64位的明文块转换成64位的密文块。解密过程使用相同的算法,但是使用逆轮密钥顺序。DES算法的强度主要依赖于密钥的复杂性和轮函数的设计,但由于密钥长度较短,现在被认为不够安全,因此在需要高安全性的场合,通常推荐使用更先进的加密算法。
DES(Data Encryption Standard)算法中的S盒(Substitution boxes)和P盒(Permutation box)是算法的核心组成部分,它们的设计原理和作用对于理解DES的加密机制至关重要。
S盒(Substitution Boxes)
设计原理:
S盒是DES算法中唯一的非线性部分,它提供了一种将6位输入映射到4位输出的方式。每个S盒都是预先设计好的查找表,其设计考虑了以下因素:
- 非线性:S盒的设计确保了输入的微小变化会导致输出的显著不同,这增加了密码的复杂性,使得算法更难被破解。
- 抗差分攻击:S盒的设计减少了输入输出之间的相关性,使得差分攻击变得更加困难。
- 抗线性攻击:S盒的非线性特性使得线性攻击变得更加复杂。
作用:
- 增强安全性:S盒的非线性特性是DES算法安全性的关键,它使得加密过程不易被统计分析。
- 数据压缩:每个S盒将6位输入减少到4位输出,整个DES算法使用8个S盒,将48位输入减少到32位输出。
工作方式:
- 48位输入被分为8个6位的块,每个块由一个S盒处理。
- 每个S盒的6位输入中,第1位和第6位确定行号,中间的4位确定列号。
- 根据行号和列号在S盒的查找表中找到对应的4位输出。
P盒(Permutation Box)
设计原理:
P盒是一个32位的置换盒,它定义了在轮函数中S盒输出后的位重新排列的规则。P盒的设计考虑了以下因素:
- 混淆:通过重新排列位,P盒增加了密文的复杂性,使得密文与明文之间的关系更加难以分析。
- 扩散:P盒确保了明文中的每一位都会影响到多个输出位,从而增加了密文的扩散性。
作用:
- 进一步增加复杂性:P盒在S盒之后应用,增加了加密过程的复杂性。
- 确保扩散:P盒确保了明文中的信息在密文中得到了充分的扩散。
工作方式:
- P盒接受来自S盒的32位输出。
- 根据P盒定义的规则,这32位被重新排列,产生新的32位输出。
DES算法的S盒和P盒共同工作,提供了强大的混淆和扩散效果,这是DES算法能够提供有效加密的关键。然而,由于S盒和P盒的固定性和已知性,它们也成为了攻击者分析算法弱点的目标。随着计算能力的提升,DES算法的安全性受到了挑战,因此现在通常推荐使用更长的密钥和更复杂的算法,如AES(Advanced
Encryption Standard)。
密钥管理策略
1. 密钥的生成:
- DES算法的密钥长度为56位,通常由用户提供。密钥生成过程包括对用户提供的密钥进行置换选择1(PC-1)操作,生成56位密钥,并通过轮密钥生成算法生成16个48位的子密钥。
2. 密钥的存储:
- DES算法中的密钥通常需要妥善存储,以确保安全性。密钥可以存储在安全的硬件模块中,如安全模块或专用加密硬件中,也可以采用密钥管理系统(KMS)进行管理和存储。
3. 密钥管理策略:
- 定期更换密钥:定期更换密钥可以减少密钥被破解的风险。
- 分级访问控制:对不同级别的用户或系统分配不同的密钥,限制密钥的访问权限。
- 密钥分发安全:确保密钥在传输过程中不被窃取或篡改,可以使用安全通信渠道或密钥交换协议。
密钥调度算法
1. 子密钥的生成:
- DES算法通过轮密钥生成算法生成16个48位的子密钥。该过程包括初始密钥的置换选择1(PC-1)操作,然后通过循环左移和置换选择2(PC-2)操作生成每一轮所需的子密钥。
2. 轮密钥的应用:
- 每一轮DES算法中,使用一个48位的子密钥与右半部分进行异或运算,增加算法的复杂性和安全性。
- 轮密钥的应用使得每一轮的加密操作都依赖于不同的密钥,增加了破解的难度。
3. 密钥调度的重要性:
- 密钥调度算法是DES算法中关键的一部分,影响着加密算法的安全性和效率。
- 良好的密钥调度算法能够生成足够复杂且不可预测的子密钥序列,提高了算法的安全性。
DES算法的安全性分析
1. 密钥长度:
- DES算法的密钥长度为56位,随着计算能力的增强,56位密钥长度已经不足以提供足够的安全性。穷举攻击可以在合理时间内破解DES算法。
2. 差分分析和线性分析:
- 差分分析和线性分析是针对分组密码的常见攻击手法。
- DES算法对差分分析和线性分析具有一定的抵抗能力,但并不是完全安全的。在一定条件下,这些攻击仍然可以降低DES算法的安全性。
DES的弱点
1. 密钥长度:
- DES算法的56位密钥长度相对较短,容易受到穷举攻击的威胁。
2. 硬件实现:
- DES算法的S盒设计和置换操作在硬件实现中可能存在侧信道攻击的风险。
3. 现代密码学中的更安全的替代算法
1. AES(高级加密标准) :
- AES是目前广泛应用的对称加密算法,取代了DES算法。AES支持128位、192位和256位的密钥长度,提供更高的安全性。
- AES在设计上考虑了差分分析、线性分析等攻击手法,具有更强的抵抗能力。
2. 三重DES(Triple DES) :
- 三重DES是对DES算法的增强版本,通过多次应用DES算法提高了安全性。使用两个或三个不同的56位密钥对数据进行加密,提供更高级别的保护。
3. 现代分组密码算法:
- 除了AES和三重DES,现代密码学中还有许多其他安全性更高的分组密码算法,如Serpent、Twofish等,这些算法采用更长的密钥长度和更复杂的结构,提供更高级别的安全性。
DES算法在实际系统中的应用
1. 数据加密标准:
- DES算法曾经作为数据加密标准被广泛应用在各种系统中,包括金融、政府、通信等领域。DES算法提供了对称加密的解决方案,能够对数据进行加密和解密操作。
2. 网络安全协议:
- DES算法在网络安全协议中也有应用,例如TLS/SSL协议中可以使用DES算法进行数据加密传输。然而,由于DES算法的密钥长度较短,现在更多地选择AES等更安全的算法来替代DES。
DES算法在各种场景下的性能和适用性
1. 性能:
- DES算法的加密和解密速度相对较快,适用于对数据进行快速加密和解密的场景。但是,由于现代计算能力的提升,DES算法的密钥长度较短,容易受到穷举攻击,性能在安全性上存在一定的缺陷。
2. 适用性:
- DES算法适用于对数据进行基本加密保护的场景,例如对于一些不太敏感的数据或者需要快速加密解密的场景。但是,在对安全性要求较高的场景下,DES算法的应用受到限制,更推荐选择更安全的替代算法,如AES、三重DES等。
Python代码示例:
使用pycryptodome库实现DES算法的加密和解密
from Crypto.Cipher import DES
from Crypto.Random import get_random_bytes# 加密函数
def encrypt_des(key, data):cipher = DES.new(key, DES.MODE_ECB)padded_data = data + b"\0" * (8 - len(data) % 8) # 补齐数据长度为8的倍数ciphertext = cipher.encrypt(padded_data)return ciphertext# 解密函数
def decrypt_des(key, ciphertext):cipher = DES.new(key, DES.MODE_ECB)decrypted_data = cipher.decrypt(ciphertext)return decrypted_data.rstrip(b"\0") # 去除补齐的空字节# 生成随机的8字节密钥
key = get_random_bytes(8)# 要加密的数据
data = b"Hello, World!"# 加密
encrypted_data = encrypt_des(key, data)
print("加密后的数据:", encrypted_data)# 解密
decrypted_data = decrypt_des(key, encrypted_data)
print("解密后的数据:", decrypted_data.decode("utf-8"))
这段Python代码使用了pycryptodome库来实现DES算法的加密和解密过程。首先生成一个随机的8字节密钥,然后对待加密的数据进行加密并输出加密后的数据,最后对加密后的数据进行解密并输出解密后的数据。请确保已安装pycryptodome库。
Java代码示例:
使用Java内置的javax.crypto库实现DES算法的加密和解密
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import java.util.Base64;public class DESExample {public static void main(String[] args) throws Exception {String keyString = "abcdefgh"; // 8字节密钥String data = "Hello, World!";// 加密byte[] encryptedData = encryptDES(keyString, data);System.out.println("加密后的数据: " + Base64.getEncoder().encodeToString(encryptedData));// 解密String decryptedData = decryptDES(keyString, encryptedData);System.out.println("解密后的数据: " + decryptedData);}public static byte[] encryptDES(String keyString, String data) throws Exception {DESKeySpec desKeySpec = new DESKeySpec(keyString.getBytes());SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey key = keyFactory.generateSecret(desKeySpec);Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, key);return cipher.doFinal(data.getBytes());}public static String decryptDES(String keyString, byte[] encryptedData) throws Exception {DESKeySpec desKeySpec = new DESKeySpec(keyString.getBytes());SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey key = keyFactory.generateSecret(desKeySpec);Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");cipher.init(Cipher.DECRYPT_MODE, key);byte[] decryptedBytes = cipher.doFinal(encryptedData);return new String(decryptedBytes);}
}
这段Java代码使用了Java内置的javax.crypto库来实现DES算法的加密和解密过程。首先定义了一个8字节的密钥,然后对待加密的数据进行加密并输出加密后的数据,最后对加密后的数据进行解密并输出解密后的数据。请确保已正确配置Java环境。
附录
推荐以下文献、资料和工具,这些资源将有助于进一步了解DES算法及其在密码学领域的应用:
- 《Applied Cryptography: Protocols, Algorithms, and Source Code in C》(《应用密码学:C语言协议、算法和源代码》)一书,作者Bruce
Schneier。这本书介绍了许多密码学算法,包括DES,以及它们的实际应用和实现。 - 《Cryptography and Network Security: Principles and Practice》(《密码学与网络安全:原理与实践》)一书,作者William
Stallings。这本书详细介绍了DES算法的原理、实现和在网络安全中的应用。 - NIST(美国国家标准与技术研究院)的资料库中关于DES算法的文档,可以了解DES算法的标准规范和历史发展。
- 《The Design of Rijndael: AES - The Advanced Encryption Standard》(《Rijndael的设计:AES - 高级加密标准》)一书,作者Vincent
Rijmen、Joan Daemen。虽然是关于AES算法的书籍,但也可以对对称加密算法的设计和实现有更深入的了解,从而更好地理解DES算法。 - 在学术搜索引擎(如Google Scholar)上搜索关于DES算法的研究论文,可以找到最新的研究成果和对DES算法的改进或安全性分析的文章。
- 在线DES加解密
相关文章:
深入理解DES算法:原理、实现与应用
title: 深入理解DES算法:原理、实现与应用 date: 2024/4/14 21:30:21 updated: 2024/4/14 21:30:21 tags: DES加密对称加密分组密码密钥管理S盒P盒安全性分析替代算法 DES算法简介 历史 DES(Data Encryption Standard)算法是由IBM研发&…...
# 达梦sql查询 Sql 优化
达梦sql查询 Sql 优化 文章目录 达梦sql查询 Sql 优化注意点测试数据单表查询 Sort 语句优化优化过程 多表关联SORT 优化函数索引的使用 注意点 关于优化过程中工具的选用,推荐使用自带的DM Manage,其它工具在查看执行计划等时候不明确在执行计划中命中…...
Linux下SPI驱动:SPI设备驱动简介
一. 简介 Linux下的SPI 驱动框架和 I2C 很类似,都分为主机控制器驱动和设备驱动,主机控制器也就是 SOC的 SPI 控制器接口,SPI设备驱动也就是所操作的SPI设备的驱动。 本文来学习一下Linux下SPI设备驱动。 二. Linux下SPI驱动:SP…...
【简明图文教程】Node.js的下载、安装、环境配置及测试
文章目录 前言下载Node.js安装Node.js配置Node.js配置环境变量测试后言 前言 本教程适用于小白第一次从零开始进行Node.js的下载、安装、环境配置及测试。 如果你之前已经安装过了Node.js或删除掉了Node.js想重新安装,需要先参考以下博客进行处理后,再根…...
共模电感饱和与哪些参数有关?这些参数是如何影响共模电感的?
在做一个变频器项目,遇到一个问题,在30Hz重载超过一定1小时,CE测试结果超出限制,查找原因最终发现EMI filter内的共模电感加热,fail现象可以复现。最终增大Y电容把问题解决了。由此问题引申出一个问题,到底…...
儿童护眼台灯怎么选?五款必选的高口碑护眼台灯推荐
儿童台灯,想必大家都不会陌生了,是一种学生频繁使用的小灯具,一般指放在桌面用的有底座的电灯。随着近年来儿童青少年的视力急速下滑,很多家长都会选择给孩子选择一款合适的护眼台灯,以便孩子夜晚学习能有个好的照明环…...
前端小技巧之轮播图
文章目录 功能htmlcssjavaScript图片 设置了一点小难度,不理解的话,是不能套用的哦!!! (下方的圆圈与图片数量不统一,而且宽度是固定的) 下次写一些直接套用的,不整这些麻…...
手动实现简易版RPC(上)
手动实现简易版RPC(上) 前言 什么是RPC?它的原理是什么?它有什么特点?如果让你实现一个RPC框架,你会如何是实现?带着这些问题,开始今天的学习。 本文主要介绍RPC概述以及一些关于RPC的知识,为…...
大语言模型总结整理(不定期更新)
《【快捷部署】016_Ollama(CPU only版)》 介绍了如何一键快捷部署Ollama,今天就来看一下受欢迎的模型。 模型简介gemmaGemma是由谷歌及其DeepMind团队开发的一个新的开放模型。参数:2B(1.6GB)、7Bÿ…...
关于npm和yarn的使用(自己的问题记录)
目录 一 npm 和 yarn 的区别 二 npm 和 yarn 常用命令对比 1. 初始化项目 2. 安装所有依赖包 3. 安装某个依赖包 4.安装某个版本的依赖包 5. 更新依赖包 5. 移除依赖包 三 package.json中 devDependencies 和 dependencies 的区别。 四 npm安装包时,…...
Web端Excel的导入导出Demo
📚目录 📚简介:✨代码的构建:💭Web端接口Excel操作🚀下载接口🚀导入读取数据接口 🏡本地Excel文件操作⚡导出数据🌈导入读取数据 📚简介: 使用阿里巴巴开源组件Easy Exce…...
Java日期正则表达式(附Demo)
目录 前言1. 基本知识2. Demo 前言 对于正则匹配,在项目实战中运用比较广泛 原先写过一版Python相关的:ip和端口号的正则表达式 1. 基本知识 对于日期的正则相对比较简单 以下是一些常见的日期格式及其对应的正则表达式示例: 年-月-日&a…...
基于LabVIEW的CAN通信系统开发案例
基于LabVIEW的CAN通信系统开发案例 介绍了基于LabVIEW开发的CAN通信系统,该系统主要用于汽车行业的数据监控与分析。通过对CAN通信协议的有效应用,实现了车辆控制系统的高效信息交换与实时数据处理,从而提升了车辆性能的检测与优化能力。 项…...
SAP SD学习笔记07 - 紧急发注(急单),现金贩卖,贩卖传票Type/ 明细Category 及其Customize
上面讲SAP中主干流程的时候,还有后面讲一括处理的时候,都用的是 OR 标准受注。 SAP SD学习笔记01 - 简单走一遍SD的流程:受注,出荷,请求_怎么学好sd模块-CSDN博客 下面开始讲一些稀奇古怪的非标准流程。 当然&#x…...
(六)C++自制植物大战僵尸游戏关卡数据讲解
植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/xjvbb 游戏关卡数据文件定义了游戏中每一个关卡的数据,包括游戏类型、关卡通关奖励的金币数量、僵尸出现的波数、每一波出现僵尸数量、每一波僵尸出现的类型等。根据不同的游戏类型,定义了不同的通…...
Java基于微信小程序的校园外卖平台设计与实现,附源码
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
渗透工具及其知识库(个人笔记)
1.IP搜寻 查看kali网段: ip addr 、 ifconfig namp:nmap -sP xxx.xxx.xxx.0/24 netdiscover:netdiscover xxx.xxx.xxx.0/24 arp:arp-scan -l 2.端口扫描 粗略扫描:nmap <IP> 深度扫描: …...
MongoDB的使用
一、Spring Boot集成MongoDB 1 引用依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency> 2 配置文件配置mongodb资料 # MongoDB连接信息 spring.…...
labview中FP.isFrontmost不生效?
主GUI界面中调用子GUI程序FP.isFrontmost不生效? 如果主GUI程序使用“floating”,子GUI程序使用default动作,则子GUI无法打开到最前。子GUI程序只能使用“模态”才能置顶。 主GUI程序: 子GUI程序: 改正的方法很简单,…...
Vela-OS: 记录一个class层,处理MSC协议的bug
一、关于USC-MSC类设备驱动层,处理SCSI指令的代码逻辑问题 1. 源文件 \nuttx\drivers\usbdev\usbmsc_scsi.c 2. 问题描述 对于INQUIRY指令,长度一般是6个字节,cdblen字段嵌入在CBW数据包中,如下: 命令阶段的CBW数据包: 55 53 42 43 60 2a c0 8b 24 00 00 00 0x80 0x…...
跨框架探索:React Redux 和 Vuex 对比分析快速掌握React Redux
React Redux 和 Vuex 都是前端状态管理库,分别用于 React 和 Vue.js 框架。 它们都提供了一套规范的状态管理机制,帮助开发者更好地组织和管理应用状态。下面是它们的一些异同点: 相同点: 中心化状态管理:两者都提…...
第十五届蓝桥杯省赛C/C++大学B组真题及赛后总结
目录 个人总结 C/C 组真题 握手问题 小球反弹 好数 R 格式 宝石组合 数字接龙 爬山 拔河 编辑 再总结及后续规划 个人总结 第一次参加蓝桥杯,大二,以前都在在学技术,没有系统的学过算法。所以,还是花了挺多时间去备…...
【Qt踩坑】ARM 编译Qt5.14.2源码-QtWebEngine
1.下载源码 下载网站:Index of /new_archive/qt/5.14/5.14.2/single 2.QWebEngine相关依赖 sudo apt-get install flex libicu-dev libxslt-dev sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev sudo apt-get …...
SQL语法 case when语句用法讲解
CASE WHEN解释 : SQL中的CASE WHEN语句是一种条件表达式,它允许你根据不同的情况返回不同的值。CASE WHEN通常用于SELECT语句中,用于创建新的列,该列的值取决于其他列的值。CASE WHEN可以用于任何可以使用表达式的地方。 大致概…...
Project Euler_Problem 193_Few Repeated Digits_欧拉筛+容斥公式
解题思路:暴力搜索 代码: void solve() {ll i, j,k,x,y,z,p,q,u,v,l,l1;N 999966663333, NN 1024;//N 1000;double a, b, c,d;M.NT.get_prime_Euler(1000000);l M.NT.pcnt;for (i 1; i < l; i) {u M.NT.prime[i];v M.NT.prime[i 1];x u * …...
排序算法-基数排序
基数排序是一种非比较排序算法,它将待排序的数字按照位数进行排序。基数排序的思想是先按照个位数进行排序,然后按照十位数进行排序,接着按照百位数进行排序,以此类推,直到最高位排序完成。 基数排序的步骤如下&#x…...
ChatGPT在线网页版
ChatGPT镜像 今天在知乎看到一个问题:“平民不参与内测的话没有账号还有机会使用ChatGPT吗?” 从去年GPT大火到现在,关于GPT的消息铺天盖地,真要有心想要去用,途径很多,别的不说,国内GPT的镜像…...
5.SpringSpringBoot八股
Spring,Spring MVC,Spring Boot 之间什么关系? Spring就是整个Spring框架的整体,包含AOP、JDBC、Spring MVC等等模块 SpringBoot是Spring的精简版,它在Spring的基础上添加了自动装配、内置tomcat服务器等功能,使得代码量更少,同…...
0基础刷图论最短路 3(从ATcoder 0分到1800分)
AT最短路刷题3(本文难度rated 1200~ 1400) 题目来源:Atcoder 题目收集: https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path (里面按tag分类好了Atcoder的所有题目,类似cf) &#x…...
k8s+docker一键安装过程
环境: k8s 1.20 docker 20.10 centos7.9 #docker安装 yum install -y epel-release yum install -y yum-utils yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce-20.10.6 docker-ce-cli-2…...
最大的网站建设/免费注册网页网址
目录 1、Collections工具类 2、Stack子类 1、Collections工具类 Collections是专为集合服务的工具类,可以进行List、Set、Map等集合的操作,比较有用 的方法如下: 1)批量添加 public static <T> boolean addAll(Recently…...
常州制作网站/校园推广方案
java初学者我想你们中的大多数人在探索者和冒险家的角色中遇到了以下问题-您已经设定了目标,并且愿意尝试在未知领域尝试一项新技术,以达到“未开发”的目的,以扩大您的视野。 问题在于,即使在您开始之前,仍然会出现一…...
淘宝客建网站要钱的吗/seo外链工具
1、结点的声明typedef struct node{int value;//数据域struct node* next;//指针域 }Node, *LinkedList;2、ADT函数声明LinkedList MakeEmptyList(void);//初始化一个空表 int Length(LinkedList list);//返回单链表表长 int Insert(int x, int k, LinkedList list);//在位序为…...
花店网站建设毕设介绍/电子商务平台
2009年,华晨汽车在德国的Euro NCAP标准碰撞测试中成绩糟糕,成为当年中国汽车业的典型事件。“碰撞门”后的沈阳华晨金杯汽车正视问题,对自主品牌遇到这种挫折,抑或是一种壁垒,但公司承认与和世界发达国家的一些企业有很…...
网站建设好后怎样形成app/seo职业培训学校
主要功能是更方便的添加/删除/更新RPM包. 它能自动解决包的倚赖性问题. 它能便于管理大量系统的更新问题 一、yum list|more 列出所有包文件,可搭配grep查询软件包,如yum list |grep kernel 二、yum info xxx 显示包xxx详…...
wordpress论坛vip破解/广告外链平台
正负样本不均衡是检测任务中常见的问题,在目标检测中,大量样本都是不包含目标的负样本,只有少量是包含目标的正样本,而Focal Loss就是为了解决这个问题而提出的。 Focal Loss的目的 focal loss的主要目的是降低易分类样本的权重…...