密码学基础——AES算法
目录
一、算法背景
AES算法与Rijndael算法
二、算法特点
1.安全性高
2.效率高
3.灵活性好
三、算法说明
3.1状态、种子密钥和轮数的概念
(1)状态(State)
定义
结构:通常状态是一个 4×N 字节的矩阵,这里的 N 取决于分组长度。
(2)种子密钥
定义
作用
示例
(3)轮数(Rounds)
定义
轮数的确定
作用
3.2加密过程
1.密钥扩展
目的
过程
2.初始轮
目的
过程
3.多轮加密
(1) 字节代换(SubBytes):
4.最后一轮:
3.3解密过程
1 .密钥扩展
2.初始轮(AddRoundKey)
3.多轮解密(除初始轮和最后一轮)
4.最后一轮
四、算法应用
AES(Advanced Encryption Standard)即高级加密标准,是一种对称密钥加密算法,于 2001 年被美国国家标准与技术研究院(NIST)确定为新的加密标准,用以取代 DES 算法。
一、算法背景
在 AES 之前,DES(Data Encryption Standard)是广泛使用的加密标准,但随着计算机性能的提升,DES 的 56 位密钥长度逐渐变得容易被暴力破解。为了寻找更安全、高效的加密算法,NIST 于 1997 年发起了 AES 算法征集活动,最终比利时密码学家 Joan Daemen 和 Vincent Rijmen 设计的 Rijndael 算法脱颖而出,成为了 AES 标准。
1997年4月15日美国国家标准技术研究所(NIST)发起征集AES(Advanced Encryption Standards)算法的活动,并专门成立了AES工作组。
- 基本要求:AES应该像DES和TDES那样是一个块加密方法,并且至少像TDES一样安全,但是其软件实现应该比TDES更加有效
- NIST指定AES必须:公开算法;分组大小为128比特的分组密码,支持密钥长度为128、192和256比特;通用性
对AES候选方案的评审标准有3条:
- 全面的安全性,这是最为重要的指标。
- 性能,特别是软件实现的处理性能。
- 算法的知识产权等特征。
1998年确定第一轮15个候选者
1999年确定第二轮五个候选者
- MARS
- RC6
- Rijndael
- Serpent
- Twofish
经过多轮评估、测试, NIST于2000年10月2日正式宣布选中比利时密码学家Joan Daemen 和 Vincent Rijmen 提出的密码算法Rijndael NIST于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准
AES算法与Rijndael算法
常常将AES算法称为Rijndael算法;
严格地讲,Rijndael算法和AES算法并不完全一样,因为Rijndael算法是数据块长度和加密密钥长度都可变的迭代分组加密算法,其数据块和密钥的长度可以是128位、192位和256位。尽管如此,在实际应用中二者一般被认为是相同的。
二、算法特点
1.安全性高
AES 支持 128 位、192 位和 256 位三种密钥长度,目前尚未发现有效的针对 AES 的破解方法,能够为数据提供强大的安全保障。
2.效率高
AES 算法的设计使得它在硬件和软件实现上都具有较高的效率,无论是在嵌入式设备还是高性能服务器上,都能快速完成加密和解密操作。
3.灵活性好
AES 可以工作在多种模式下,如 ECB(电子密码本模式)、CBC(密码块链接模式)、CFB(密码反馈模式)、OFB(输出反馈模式)和 CTR(计数器模式)等,以满足不同的应用场景需求。
三、算法说明
3.1状态、种子密钥和轮数的概念
(1)状态(State)
定义
类似于明文分组和密文分组,算法的中间结果也须分组,称算法中间结果的分组为状态,所有的操作都在状态上进行。状态可以用以字节为元素的矩阵阵列表示,该阵列有4行,列数记为Nb,Nb等于分组长度除以32。本质上是一个二维字节数组,在 AES 算法中,明文和密文都被划分为固定大小的块,而状态就用于存储这些数据块在加密或解密各个阶段的中间结果。
结构:通常状态是一个 4×N 字节的矩阵,这里的 N 取决于分组长度。
种子密钥类似地用一个以字节为元素的矩阵阵列表示,该阵列有4行,列数记为Nk,Nk等于分组长度除以32。下图是Nb=6的状态和Nk=4的种子密钥的矩阵阵列表示。
(2)种子密钥
定义
种子密钥是用户提供的初始密钥,它是 AES 加密和解密的基础。种子密钥的长度可以是 128 位、192 位或 256 位,用户可以根据具体的安全需求选择合适的密钥长度。
作用
种子密钥本身并不直接用于每一轮的加密操作,而是通过密钥扩展算法生成一系列轮密钥。密钥扩展算法会根据种子密钥生成足够数量的轮密钥,这些轮密钥会在不同的加密轮次中使用。每一轮的轮密钥长度与分组长度相同,都是 128 位。
示例
假如用户选择了一个 128 位的种子密钥,那么在加密过程中,密钥扩展算法会基于这个种子密钥生成 11 个 128 位的轮密钥,其中一个用于初始轮,另外 10 个分别用于后续的 10 轮加密操作。
(3)轮数(Rounds)
定义
轮数指的是 AES 加密过程中进行的迭代次数。AES 算法的加密过程由多个轮次组成,每一轮都会对状态进行一系列的变换操作,从而逐步增强加密的安全性。
轮数的确定
轮数由分组长度和种子密钥的长度共同决定,具体对应关系如下:
分组长度(位) | 种子密钥长度(位) | 轮数 |
---|---|---|
128 | 128 | 10 |
128 | 192 | 12 |
128 | 256 | 14 |
192 | 192 | 12 |
192 | 256 | 14 |
256 | 256 | 14 |
作用
增加轮数可以增强加密的安全性,因为更多的轮次意味着更多的变换操作,使得攻击者更难通过分析密文来破解密钥。但同时,轮数的增加也会导致加密和解密的计算量增大,降低算法的效率。所以在实际应用中,需要根据具体的安全需求和性能要求来选择合适的种子密钥长度和轮数。
3.2加密过程
AES 是一种分组密码算法,它将明文数据分成固定长度的块(通常为 128 位),然后对每个块进行加密处理。加密过程主要包括以下几个步骤:
1.密钥扩展
目的
根据输入的种子密钥生成多个轮密钥,每一轮加密都使用不同的轮密钥。轮密钥的数量由密钥长度决定,128 位密钥对应 10 轮加密,需 11 个轮密钥;192 位密钥对应 12 轮加密,需 13 个轮密钥;256 位密钥对应 14 轮加密,需 15 个轮密钥。
过程
将种子密钥按字节存储在一个数组中。
以 4 字节为一个字(Word),将密钥数组划分为若干字。
通过一系列的变换,包括字节代换、循环移位和与轮常量异或等操作,从种子密钥生成所有轮密钥
2.初始轮
目的
将明文块与第一轮轮密钥进行异或操作,为后续的加密轮次做准备。
过程
将 128 位的明文按字节存储在一个 4×4 的状态矩阵中。
将第一轮轮密钥也按字节排列成 4×4 的矩阵。
对状态矩阵和轮密钥矩阵的对应元素进行异或运算,得到初始轮后的状态矩阵。
3.多轮加密
除了初始轮和最后一轮,中间的每一轮都包括四个基本操作:
(1) 字节代换(SubBytes):
目的:使用一个固定的 S 盒对每个字节进行非线性替换,增强加密的混淆性。
过程:使用一个固定的 S 盒(Substitution Box),将状态矩阵中的每个字节替换为 S 盒中对应位置的值。
代换表(即S-盒)是可逆的,由以下两个变换的合成得到:
首先,将字节看作GF(28)上的元素,映射到自己的乘法逆元,‘00’映射到自己。
其次,对字节做如下的(GF(2)上的,可逆的)仿射变换:
上述S-盒对状态的所有字节所做的变换记为:
ByteSub (State)
ByteSub的逆变换由代换表的逆表做字节代换,可通过如下两步实现,首先进行仿射变换的逆变换,再求每一字节在GF(28)上逆元。
(2)行移位(ShiftRows):
目的:对状态矩阵的行进行循环移位,增加数据的扩散性。
过程:将状态矩阵的第 0 行保持不变,第 1 行循环左移 1 个字节,第 2 行循环左移 2 个字节,第 3 行循环左移 3 个字节。
行移位是将状态阵列的各行进行循环移位,不同状态行的位移量不同。第0行不移动,第一行循环左移C1个字节,第二行循环左移C2个字节,第三行循环左移C3个字节。位移量C1、C2、C3的取值与Nb有关,由下图给出。
按指定的位移量对状态的行进行的行移位运算记为:
ShiftRow (State)
ShiftRow的逆变换是对状态阵列的后三列分别以位移量Nb -C1、Nb - C2、Nb - C3进行循环移位,使得第i行第j列的字节移位到(j+Nb- Ci) mod Nb。
(3)列混合(MixColumns):对状态矩阵的每一列进行线性变换,进一步扩散数据。
目的:对状态矩阵的列进行线性变换,进一步扩散数据。
过程:将状态矩阵的每一列视为一个多项式,与一个固定的多项式进行模运算,得到新的列。
列混合变换中,将状态阵列的每个列视为GF(28)上的多项式,再与一个固定的多项式c(x)进行模x4+1乘法。当然要求c(x)是模x4+1可逆的多项式,否则列混合变换就是不可逆的,因而会使不同的输入分组对应的输出分组可能相同。Rijndael的设计者给出的c(x)为(系数用16进制数表示):
c(x)='03'x3+'01'x2+'01'x+'02'
c(x)是与x4+1互素的,因此是模x4+1可逆的。列混合运算也可写为矩阵乘法。设b(x)= c(x) a(x),则
这个运算需要做GF(28)上的乘法,但由于所乘的因子是三个固定的元素02、03、01,所以这些乘法运算仍然是比较简单的。
对状态State的所有列所做的列混合运算记为:
MixColumn(State)
列混合运算的逆运算是类似的,即每列都用一个特定的多项式d(x) 相乘。d(x)满足
('03'x3+'01'x2+'01'x+'02')d(x) ='01'
d(x)= '0B'x3+'0D'x2+'09'x+'0E'
(4) 轮密钥加(AddRoundKey):将状态矩阵与当前轮的轮密钥进行异或操作。
目的:将当前轮的状态矩阵与该轮的轮密钥进行异或操作,引入密钥信息。
过程:将状态矩阵和轮密钥矩阵的对应元素进行异或运算。
密钥加是将轮密钥简单地与状态进行逐比特异或。轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb。
状态State与轮密钥RoundKey的密钥加运算表示为:
AddRoundKey (State, RoundKey)
密钥加是将轮密钥简单地与状态进行逐比特异或。轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb。
状态State与轮密钥RoundKey的密钥加运算表示为:
AddRoundKey (State, RoundKey)
4.最后一轮:
最后一轮与中间轮的操作基本相同,但不进行列混合操作,只包含字节代换、行移位和轮密钥加三个步骤。
3.3解密过程
AES 的解密过程与加密过程类似,但操作顺序相反,并且使用的是加密过程中生成的轮密钥的逆变换。具体步骤如下:
1 .密钥扩展
这一步与加密过程中的密钥扩展完全相同。依据输入的种子密钥,借助密钥扩展算法生成一系列轮密钥。轮密钥的数量由密钥长度决定,例如 128 位密钥需生成 11 个轮密钥,192 位密钥需 13 个,256 位密钥需 15 个。
2.初始轮(AddRoundKey)
目的:把密文块与最后一轮的轮密钥进行异或操作,为后续的解密轮次做准备。
过程:
将 128 位的密文按字节存于一个 4×4 的状态矩阵中。
把最后一轮轮密钥也按字节排列成 4×4 的矩阵。
对状态矩阵和轮密钥矩阵的对应元素做异或运算,得到初始轮后的状态矩阵。
3.多轮解密(除初始轮和最后一轮)
(1)逆字节代换(InvSubBytes)
目的:对状态矩阵中的每个字节执行与加密时字节代换相反的操作,恢复字节的原始值。
过程:使用一个固定的逆 S 盒(与加密时的 S 盒对应),把状态矩阵中的每个字节替换为逆 S 盒中对应位置的值。
(2)逆行移位(InvShiftRows)
目的:对状态矩阵的行进行与加密时行移位相反的循环移位操作,恢复行的原始顺序。
过程:将状态矩阵的第 0 行保持不变,第 1 行循环右移 1 个字节,第 2 行循环右移 2 个字节,第 3 行循环右移 3 个字节。
(3)逆列混合(InvMixColumns)
目的:对状态矩阵的列进行与加密时列混合相反的线性变换,恢复列的原始值。
过程:把状态矩阵的每一列视为一个多项式,与一个固定的逆多项式进行模运算,得到新的列。
(4)轮密钥加(AddRoundKey)
目的:将当前轮的状态矩阵与该轮的轮密钥进行异或操作,引入密钥信息。
过程:对状态矩阵和轮密钥矩阵的对应元素进行异或运算。
4.最后一轮
最后一轮与中间轮的操作基本相同,但不进行逆列混合操作,仅包含逆字节代换、逆行移位和轮密钥加三个步骤。经过这一轮操作后,状态矩阵中的内容即为解密后的明文。
四、算法应用
AES 算法在各种领域都有广泛的应用,包括:
网络通信:
在 SSL/TLS 协议中,AES 被用于加密网络传输的数据,确保数据在传输过程中的机密性和完整性。
存储加密:
许多操作系统和存储设备都支持 AES 加密,用于保护硬盘、U 盘等存储介质上的数据安全。
金融领域:
在银行、支付系统等金融领域,AES 被广泛应用于保护用户的账户信息、交易数据等敏感信息。
相关文章:
密码学基础——AES算法
目录 一、算法背景 AES算法与Rijndael算法 二、算法特点 1.安全性高 2.效率高 3.灵活性好 三、算法说明 3.1状态、种子密钥和轮数的概念 (1)状态(State) 定义 结构:通常状态是一个 4N 字节的矩阵࿰…...
淘宝API与小程序深度联动:商品详情页“一键转卖”功能开发
要实现淘宝 API 与小程序深度联动,开发商品详情页 “一键转卖” 功能,可按以下步骤进行: 1. 前期准备 淘宝开放平台接入:在淘宝开放平台注册开发者账号,创建应用,获取 App Key 和 App Secret,…...
深入解析 C++ 设计模式:原理、实现与应用
一、引言 在 C 编程的广袤领域中,设计模式犹如闪耀的灯塔,为开发者指引着构建高效、可维护软件系统的方向。设计模式并非神秘莫测的代码魔法,实际上,我们在日常编程中或许早已与之打过交道。简单来说,设计模式常常借助…...
配置与管理代理服务器
安装squid Squid软件包在标准yum存储库中可用,因此,我们正在使用yum命令安装Squid代理。 [rootserver ~]# dnf install -y squid //安装 [rootserver ~]#systemctl enable --now squid.service [rootserver ~]#systemctl status squid.serv…...
RuntimeError: CUDA error: invalid device function
CUDA内核编译时的架构设置与当前GPU不兼容导致 -- The CUDA compiler identification is NVIDIA 11.5.119 (实际为 12.6) 解决方案: 1. 查看显卡计算能力 2. CMakeLists.txt 修改 set_target_properties(my_library PROPERTIESCUDA_AR…...
vulnhub:sunset decoy
靶机下载地址https://www.vulnhub.com/entry/sunset-decoy,505/ 渗透过程 简单信息收集 nmap 192.168.56.0/24 -Pn # 确定靶机ip:192.168.56.121 nmap 192.168.56.121 -A -T4 # 得到开放端口22,80 在80端口得到save.zip,需要密码解压。 john破解压缩…...
MySQL日期时间类型详解:DATE、TIME和DATETIME的用法与区别
在数据库设计中,正确处理日期和时间数据是至关重要的。MySQL提供了多种数据类型来存储时间信息,其中最常用的三种是DATE、TIME和DATETIME。本文将详细介绍这三种类型的特性、区别以及实际应用场景。 一、基本数据类型介绍 1. DATE类型 用途࿱…...
js异步机制
1、什么是异步机制?为什么js需要异步机制? 异步机制和同步机制是相对应的,异步是指:当代码按照顺序执行到一些比较耗时的操作,不会立刻执行,而是将这些操作推到一个队列中等待合适的时机从队列中取出任务执…...
Pycharm常用快捷键总结
主要是为了记录windows下的PyCharm的快捷键,里面的操作都试过了功能描述会增加备注。 文件操作 快捷键功能描述Ctrl N新建文件Ctrl Shift N根据名称查找文件Ctrl O打开文件Ctrl S保存当前文件Ctrl Shift S另存为Alt F12打开终端(Terminal&…...
巧记英语四级单词 Unit2-下【晓艳老师版】
mit传递(send 送)、 superiority n.优势,优越性 超越别人的东西就是自己的优势govern v.统治 government政府 统治的机构administer v.管理,治理 minister 大臣 部长,mini-小人,一再的做大臣 部长…...
走进底层 - JVM工作原理入门指南
走进底层 - JVM工作原理入门指南 Java 之所以能够实现“一次编写,到处运行”(Write Once, Run Anywhere, WORA),核心在于 Java 虚拟机(JVM, Java Virtual Machine)。JVM 是 Java 程序的运行环境,…...
windows 10频繁通知A字“出现了问题,无法安装功能。”
一、故障突现 windows 10频繁通知A字“出现了问题,无法安装功能。” 编辑文档时发现黑体、楷体gb_2312等常用字体,在字体列表中失踪,原来设置好的字体也显示失效。 二、起因分析 回想了一下,是3月27日安装了 2025-适用于Windows…...
基础环境配置
1.GitGerritjenkins Linux 远程登录 | 菜鸟教程 https://zhuanlan.zhihu.com/p/22766058062 2.Samba 配置 3.软件安装 (1)MobaXterm (2)Vscode (3)Xmind (4) Audacity Aud…...
ROS2——foxy apt打包离线安装deb包
需要从A设备复制ROS2环境到B设备,且B设备有可能没网络,所以选择制作离线资源包 1. 本机安装指令 本机环境ubuntu20.04,安装ros2-foxy版本,直接输入以下指令,基本不会遇到问题 这里安装的是ros-base版本,不…...
大数据学习(104)-clickhouse与hdfs
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
大数据 - 1. 概述
早期的计算机(上世纪70年代前) 是相互独立的,各自处理各自的数据上世纪70年代后,出现了基于TCP/IP协议的小规模的计算机互联互通。上世纪90年代后,全球互联的互联网出现。当全球互联网逐步建成(2000年左右&…...
CD25.【C++ Dev】类和对象(16) static成员(上)
目录 1.static成员变量 问题:实现一个类,计算程序中创建出了多少个类对象 设计思路 代码示例 版本1 版本2 static成员 特点1.static成员为静态成员,为所有类对象所共享(在某种程度上可以理解为全局的,用类去封装"全局变量"),存放在静态区,则不属于某个具体的…...
C语言今天开始了学习
好多年没有弄了,还是捡起来弄下吧 用的vscode 建议大家参考这个配置 c语言vscode配置 c语言这个语言简单,但是今天听到了一个消息说python 不知道怎么debug。人才真多啊...
Mockito如何对静态方法进行测试
在 Mockito 中,直接对静态方法进行模拟是困难的,因为 Mockito 的设计理念是优先通过依赖注入(DI)管理对象,而静态方法破坏了这种设计(难以解耦)。不过,从 Mockito 3.4.0 版本开始,通过 mockStatic 方法支持了对静态方法的模拟(需配合 mockito-inline 依赖)。 从 Mo…...
Three.js 入门实战:安装、基础概念与第一个场景⭐
学习本章节你不必要追求细节,你只需要了解基本的3D场景需要哪些元素组成,如何通过组成3D场景的元素属性调整来控制3D物体或者场景即可。 在上一篇文章中我们初识了 Three.js,今天我们正式进入实战环节 🎯 前置准备: …...
【QT】QT的消息盒子和对话框(自定义对话框)
QT的消息盒子和对话框(自定义对话框) 一、消息盒子QMessageBox1、弹出警告盒子示例代码:现象: 2、致命错误盒子示例代码:现象: 3、帮助盒子示例代码:现象: 4、示例代码: …...
QT面试题:内存管理与对象生命周期
题目: 在Qt中,当一个父对象被销毁时,其子对象是否会被自动释放?请结合Qt的内存管理机制说明原因,并解释在什么情况下可能导致内存泄漏。如何避免这类问题? 参考答案 父子对象的内存管理机制 …...
linux查询inode使用率
在 Linux 中,inode 用于存储文件和目录的元数据(如权限、所有者、时间戳等)。当文件系统的 inode 被耗尽时,即使磁盘空间充足,系统也会提示 No space left on device。以下是查询 inode 使用率的详细方法: …...
算法基础—二分算法
目录 一、⼆分查找例题 1 牛可乐和魔法封印 2 A-B 数对 3 烦恼的高考志愿 二、 ⼆分答案 1 木材加⼯ 2 砍树 3 跳石头 ⼆分算法的原理以及模板其实是很简单的,主要的难点在于问题中的各种各样的细节问题。因此,⼤多数情况下,只是背会…...
2024年第十五届蓝桥杯CC++大学A组--成绩统计
2024年第十五届蓝桥杯C&C大学A组--成绩统计 题目: 动态规划, 对于该题,考虑动态规划解法,先取前k个人的成绩计算其方差,并将成绩记录在数组中,记录当前均值,设小蓝已检查前i-1个人的成绩&…...
家居实用品:生活中的艺术,家的温馨源泉
在快节奏的现代生活中,家居实用品不仅是日常所需的工具,更是营造温馨家居氛围、提升生活品质的关键元素。它们以其独特的魅力,默默地融入我们的日常生活,成为连接物质世界与精神世界的桥梁。 走进家门,首先映入眼帘的或…...
TCP重传率高与传输延迟问题
目录标题 排查步骤:TCP重传率高与传输延迟问题v1.0通过 rate(node_netstat_Tcp_RetransSegs[3m]) 排查 TCP 重传问题的步骤1. **指标含义与初步分析**2. **关联指标排查**3. **定位具体问题源**4. **解决方案**5. **验证与监控** v2.0一、基础检查二、网络层分析三、…...
超越简单检索:探索知识图谱与大型语言模型的协同进化之路
摘要: 大型语言模型(LLM)在自然语言处理领域取得了革命性进展,但其在事实准确性、复杂推理和可解释性方面仍面临挑战,“幻觉”现象是其固有局限性的体现。知识图谱(KG)作为结构化人类知识的载体,…...
汽车的四大工艺
文章目录 冲压工艺核心流程关键技术 焊接工艺核心流程 涂装工艺核心流程 总装工艺核心流程终检与测试静态检查动态检查四轮定位制动转鼓测试淋雨测试总结 简单总结下汽车的四大工艺(从网上找了一张图,感觉挺全面的)。 冲压工艺 将金属板材通过…...
研发效能实践:技术评审会生存指南
文章目录 🚨开篇暴击:为什么你的评审会像「菜鸡互啄」?⚙️第一章:Google Design Sprint——5天把争议变成共识📅 Day 1-5 实操手册Map the Problem(画地图)Sketch Solutions…...
js 拷贝
在 JavaScript 中,拷贝对象和数组时需要特别注意,因为对象和数组是引用类型,直接赋值只会复制引用,而不是实际的数据。以下是几种常见的拷贝方法及其应用场景: 1. 浅拷贝(Shallow Copy) 浅拷贝…...
AI比人脑更强,因为被植入思维模型【51】效率思维模型
giszz的理解:效率实际没有用,过分的追求效率,也是当下社会的弊病。但是效率思维,让我们能够用一个最简单的模型,去平衡投入和产出的最佳比例。过高的效率,会导致过大的压力,合适是最好的。 一、…...
Spark RDD相关概念
Spark运行架构与核心组件 1.Spark运行梁构 spark运行架构包括master和slave两个主要部分。master负责管理整个集群的作业任务调度,而slave则负责实际执行任务。 dirver是Spark驱动器节点,负责执行Spark任务中的main方法,将用户程序转换成作业…...
每日一题(小白)数组娱乐篇21
由于题意可知我们是要将对应的数字转换为英文,我们要考虑两点一个是进制的转换,也就是类似于我们的十进制一到9就多一位,这里的进制就是Z进制也就是27进制一旦到26下一位则进位;另一方面要考虑数字的转换也就是1~26对应A~Z。解决上…...
LLM 的model.generate() 参数说明
LLM 的model.generate() 参数说明 目录 LLM 的model.generate() 参数说明生成长度控制参数采样策略参数重复惩罚参数束搜索参数其他参数model.generate() 方法是 Hugging Face Transformers 库中用于文本生成的核心方法,它有众多参数可用于控制生成过程 生成长度控制参数 min…...
每日一题——AB10 反转链表
ListNode* prev NULL;while(head) {ListNode* next head->next; // 先记住下一个节点head->next prev; // 把当前节点指向前一个prev head; // 前一个节点变成当前节点head next; // 当前节点移动到下一个}return prev; // …...
大模型备案语料安全要求解析
根据大模型备案法规要求及实践经验,我整理除了以下涉及到语料安全相关环节的要求,供大家参考,如果有大模型备案和算法备案的更多疑问,也可以和我沟通交流。 一、关键词库规模与覆盖范围 1.基础规模 企业需建立拦截关键词库&…...
【Ansible自动化运维】二、Playbook 深入探究:构建复杂自动化流程
在 Ansible 自动化运维体系中,Playbook 是极为关键的部分。它允许我们以一种结构化、可重复的方式定义和执行一系列复杂的任务,从而构建高效的自动化流程。本篇文章将深入探究 Ansible Playbook 的各个方面,助您掌握构建复杂自动化…...
unity 保存场景功能 可以保存运行时候地形变化和动态生成得物体,点击加载进来后可以继续上次退出时得场景
直接上代码了 using System; using System.Collections.Generic; using System.IO; using UnityEngine; using UnityEngine.UI;[System.Serializable] public class TerrainSaveData {public int heightmapResolution;public float terrainWidth;public float terrainLength;p…...
光谱相机的关键技术参数
光谱相机的关键技术参数直接影响其数据获取能力和应用场景适配性。以下是核心参数的详细解析,涵盖光谱性能、空间性能、硬件性能及环境适应性: 一、光谱性能参数 1. 光谱范围(Spectral Range) 定义:相机可…...
Linux系统管理与编程12: FTP服务配置
(本实验在CentOS7/8上完成,OpenEuler上暂时未实现) 兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 1 实验目标 1)理解FTP服务器原理 2) 掌握FTP服务器的配置文件 3)具备安装部署VSFTP的能力 4) 具备FTP的故障排除能…...
乐观锁与悲观锁的使用场景
悲观锁的应用场景 悲观锁的基本思想是假设并发冲突会发生,因此在操作数据时会先锁定数据,直到完成操作并提交事务后才释放锁。这种方式适用于写操作较多、并发冲突可能性较高的场景。 高写入比例的数据库操作:如果系统中有很多写操作&#x…...
金融级隐私安全之DeepSeek R1 模型去中心化存储和推理实现方案
目录 DeepSeek R1 进入去中心化存储网络意味着什么? 它是如何工作的? Atoma、Walrus和 Sui Atoma Network 已成功将 DeepSeek R1 670B 参数推理模型上传到 Walrus 去中心化存储网络。这标志着这种规模的模型首次在去中心化存储层上可用,确保无需依赖中心化基础设施即可实…...
基于django大数据平台的交通数据可视化设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,基于大数据平台的交通数据可视化系统当然不能排除在外。基于大数据平台的交通数据可视化系统是在实际应用和软件工程的开发原理之上&#…...
STM32 vs ESP32:如何选择最适合你的单片机?
引言 在嵌入式开发中,STM32 和 ESP32 是两种最热门的微控制器方案。但许多开发者面对项目选型时仍会感到困惑:到底是选择功能强大的 STM32,还是集成无线的 ESP32? 本文将通过 硬件资源、开发场景、成本分析 等多维度对比…...
柳宗元经典的10首唐诗
1、最孤独的诗:《江雪》 江雪 千山鸟飞绝,万径人踪灭。 孤舟蓑笠翁,独钓寒江雪。 这首诗被誉为“唐诗五绝最佳”之作。 富于理想的“永贞革新”失败后,柳宗元被贬永州,母亲也在半年后离世。年届三十,政…...
Windows11介绍(中英文版)
一、Windows 11 的发布背景与发展历程 Windows 11 是微软公司推出的一款重要的操作系统,它是 Windows 操作系统系列的最新版本之一。微软在操作系统领域拥有悠久的历史和丰富的经验,从早期的 Windows 95 开启了图形化操作系统的新时代,到 Wi…...
使用 VSCode 本地历史记录恢复误删除文件
vsCode未知操作意外删除项目根目录入口代码文件 使用vsCode多年, 第一次遇见这种情况, 只是下载了几个插件, 可能打开的窗口太多, 有几个代码版本比对的页面, 在没有察觉的时候, 意外删除了项目根目…...
前端面试宝典---数据类型
基本数据类型 对于基本类型在创建时无需使用 new 关键字 Bigint在实际开发不常用,如果对于精度要求高可以使用第三方库,如decimal.js 基本数据类型介绍 undefined:当变量被声明但未赋值,或者函数没有返回值时,就会呈现…...
Dinky 和 Flink CDC 在实时整库同步的探索之路
摘要:本文整理自 Dinky 社区负责人,Apache Flink CDC contributor 亓文凯老师在 Flink Forward Asia 2024 数据集成(二)专场中的分享。主要讲述 Dinky 的整库同步技术方案演变至 Flink CDC Yaml 作业的探索历程,并深入…...