现代密码学 | 高级加密标准(AES)

article/2025/8/2 20:02:13

接下来我们将讨论目前大多数计算机和硬件基础设施所使用的最重要的加密算法,例如高级加密标准(AES)、里弗斯特-沙米尔-阿德曼算法(RSA)、椭圆曲线加密(ECC)、基于格的加密、(环)带错学习、同态加密。

2.2.3.1 高级加密标准 Advanced Encryption Standard(AES)
现代密码学围绕高级加密标准(AES)构建,在数字安全至关重要的时代,它至关重要。AES 旨在取代过时的数据加密标准(DES),如今已成为金融、电信和政府等多个行业数据加密的行业标准。

美国国家标准与技术研究院(NIST)于 2001 年创建了高级加密标准(AES),这是经过全面且竞争激烈的筛选程序的结果。由于数据加密标准(DES)存在弱点,主要是其 56 位的密钥长度相对较小,使其容易受到暴力破解攻击,因此需要一个新的加密标准。1997 年,NIST 发布了新加密标准的征集令,收到了来自世界各地的 15 份响应。比利时密码学家文森特·里杰门(Vincent Rijmen)和琼·达曼(Joan Daemen)创建的 Rijndael 算法经过全面评估后被选中,并被命名为高级加密标准(AES)。

由于 AES 使用对称密钥进行加密,因此加密和解密都需要同一个密钥。它支持 128 位、192 位和 256 位的密钥大小,为抵御可能的入侵提供了强大的保护。AES 的运作基于状态,即一个 4×4 列优先顺序的字节矩阵。该方法通过多轮处理将明文转换为密文,每轮处理都需要若干步骤。


AES 的主要步骤包括:

• 字节替换(SubBytes)。为了使密码具有非线性,使用一个替换盒(S 盒)将状态矩阵中的每个字节替换为不同的字节。

• 行移位(ShiftRows)。通过循环移位状态矩阵的行来实现密码中的扩散。

• 列混合(MixColumns)。为了进一步提高扩散性,通过线性变换将状态矩阵的列组合起来。

• 轮密钥加(AddRoundKey)。使用按位异或将状态矩阵与从主密钥中获得的轮密钥组合起来。

对于 128 位密钥,AES 算法有 10 轮;对于 192 位密钥,有 12 轮;对于 256 位密钥,有 14 轮。轮数随密钥大小而变化。将这两个过程结合起来,保证了 AES 具有强大的安全性和抵御各种加密攻击的能力。

由于其有效性和安全性,AES 经常被用于许多不同的应用中。它是 SSL/TLS 等安全通信协议的组成部分,这些协议保证了互联网上传输的数据的完整性和保密性,并构成了互联网安全的基础。

AES 还用于虚拟专用网络(VPN)中。虚拟专用网络(VPN)用于保护在互联网上远程站点之间传输的数据。高级加密标准(AES)在金融行业中用于保护信用卡处理和网上银行等系统中的敏感数据和交易。

Py示例代码,采用CBC模式和PKCS7填充方案(仅供学习参考):

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.backends import default_backend
import osdef aes_encrypt(plaintext: bytes, key: bytes) -> tuple:"""AES加密(CBC模式)"""# 生成随机初始化向量(IV)iv = os.urandom(16)# 设置加密器cipher = Cipher(algorithms.AES(key),modes.CBC(iv),backend=default_backend())encryptor = cipher.encryptor()# 应用PKCS7填充padder = padding.PKCS7(128).padder()padded_data = padder.update(plaintext) + padder.finalize()# 加密数据ciphertext = encryptor.update(padded_data) + encryptor.finalize()return ciphertext, ivdef aes_decrypt(ciphertext: bytes, key: bytes, iv: bytes) -> bytes:"""AES解密(CBC模式)"""# 设置解密器cipher = Cipher(algorithms.AES(key),modes.CBC(iv),backend=default_backend())decryptor = cipher.decryptor()# 解密数据padded_plaintext = decryptor.update(ciphertext) + decryptor.finalize()# 移除PKCS7填充unpadder = padding.PKCS7(128).unpadder()plaintext = unpadder.update(padded_plaintext) + unpadder.finalize()return plaintext# 示例用法
if __name__ == "__main__":# 生成32字节(256位)密钥 - 支持128/192/256位secret_key = os.urandom(32)original_message = b"Hello, Advanced Encryption Standard!"print("原始消息:", original_message.decode())# 加密encrypted_data, iv = aes_encrypt(original_message, secret_key)print("加密结果 (HEX):", encrypted_data.hex())# 解密decrypted_data = aes_decrypt(encrypted_data, secret_key, iv)print("解密消息:", decrypted_data.decode())

运行结果:
在这里插入图片描述

关键步骤

1、模逆计算修正:

行列式先转换为正数:det = det % mod

明确验证行列式是否可逆:if np.gcd(det, mod) != 1

正确计算伴随矩阵的符号:[[d, -b], [-c, a]]

2、数据类型强化:

密钥矩阵指定为整数类型:dtype=int

块操作后明确转换为列表:tolist()

3、验证结果:
加密"HELLOWOR"(数字序列:[7,4,11,11,14,22,14,17])

分块加密:

[7,4] × [[7,8],[11,11]] = [77+411, 78+411] = [93, 100] → [93%26=15(H), 100%26=22(W)]

[11,11] → [117+1111, 118+1111] = [198, 209] → [198%26=16(Q), 209%26=1(B)]

正确处理负数和模运算,确保加密/解密过程正确。


http://www.hkcw.cn/article/OaOPxxiCYu.shtml

相关文章

cocos creator资源管理器,资源动态加载和释放

cocos 2.4.11版本 cocos 动态加载的资源需要自己增加引用和减少引用计数 cc.Asset.addRef 和 cc.Asset.decRef 注意: 1.使用当前代码管理资源,要区分项目中的静态资源和动态资源,静态资源就是预制体或者场景中的资源,代码中动态…

认识scratch,scratch是什么,如何使用

scratch是图形编程,将编程简化为积木的堆叠和嵌套,无需手写代码,只需清晰的逻辑即可完成自己的代码设计。通过它可以制作简单的小游戏等。 如图所示,这个就是scratch打开的界面,整个界面分为左中右三个部分&#xff0c…

HarmonyOS实战:腾讯IM之聊天详情页面搭建(二)

前言 鸿蒙版本腾讯 IM 的聊天功能十分复杂,需要开发者手动实现整个聊天对话的业务代码,这对开发者来说是个不小的挑战。本篇文章先从最基础的聊天对话列表开始教你一步一步实现完整的聊天功能,建议点赞收藏! 实现效果 先看本文…

IM系统的负载均衡

1.IM场景的负载均衡 2.方案总览 SDK层想要连接一个TCP网关或者WebSocket网关的方案 SDK单地址:在SDK中写死某个网关的IP或者域名,缺点是更换地址需要重新打包SDK SDK多地址:防止某一个地址嗝屁了写上多个地址用足保持高可用 暴露接口给客户端:SDK层访问接口动态获得地址 注…

动态规划之网格图模型(一)

文章目录 动态规划之网格图模型(一)LeetCode 64. 最小路径和思路Golang 代码 LeetCode 62. 不同路径思路Golang 代码 LeetCode 63. 不同路径 II思路Golang 代码 LeetCode 120. 三角形最小路径和思路Golang 代码 LeetCode 3393. 统计异或值为给定值的路径…

血糖监测仪解决方案推荐芯片-NRF52832/HS6621/OM6626

随着糖尿病患者数量的增加和人们健康意识的提升,血糖监测仪成为了日常健康管理的重要设备。市场对便携、智能且易于使用的血糖监测仪需求持续增长,而无线通信技术,尤其是蓝牙技术,已成为现代血糖监测仪的核心组件,提供…

基于Vite的前端自动化部署方案

👨 作者简介:大家好,我是Taro,全栈领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录 前言一、主流解决方案二、了解SCP概念三、自动化部署…

PlankAssembly 笔记 DeepWiki 正交视图三维重建

manycore-research/PlankAssembly | DeepWiki PlankAssembly项目原理 这个项目是一个基于深度学习的3D重建系统,其核心原理是从三个正交视图的工程图纸中重建出3D形状的结构化程序表示。 核心技术原理 1. 问题定义 PlankAssembly旨在从三个正交视图的工程图纸中…

MQTT协议,EMQX部署,MQTTX安装学习

一、MQTT概述 1.什么是MQTT MQTT是一种基于“发布订阅“”模式的消息传输协议。 消息:设备和设备之间传输的数据,或者服务和服务之间要传输的数据。 协议:传输数据时所遵循的规范。 2.常见的通讯模式 (1)客户端-服…

多模态大语言模型arxiv论文略读(101)

ML-Mamba: Efficient Multi-Modal Large Language Model Utilizing Mamba-2 ➡️ 论文标题:ML-Mamba: Efficient Multi-Modal Large Language Model Utilizing Mamba-2 ➡️ 论文作者:Wenjun Huang, Jiakai Pan, Jiahao Tang, Yanyu Ding, Yifei Xing, …

论文阅读:ADVWEB : CONTROLLABLE BLACK-BOX ATTACKS ON VLM-POWERED WEB AGENTS

原文:2410.17401 源码:https://ai-secure.github.io/AdvWeb/ 摘要: 本文设计了一种专门针对web agent的黑盒攻击框架,通过训练一个对抗性提示生成模型,在网页中自动生成并注入“隐形”对抗性字符串,引导网…

Wireshark 在 macOS 上使用及问题解决

wireshark概述 Wireshark 是被广泛使用的免费开源网络协议分析软件(network protocol analyzer)或网络数据包分析工具,它可以让你在微观层面上查看网络上发生的事情。它的主要功能是截取网络数据包,并尽可能详细地展示网络数据包…

企业级安全实践:SSL/TLS 加密与权限管理(一)

引言 ** 在数字化转型的浪潮中,企业对网络的依赖程度与日俱增,从日常办公到核心业务的开展,都离不开网络的支持。与此同时,网络安全问题也日益严峻,成为企业发展过程中不可忽视的重要挑战。 一旦企业遭遇网络安全事…

#Js篇:BlobFile对象URL.createObjectURL()fetchlocationnavigatornew URl

Blob 在 JavaScript 中,Blob 是一个非常重要的对象,用于表示不可变的、原始的二进制数据块(Binary Large Object) arrayBuffer():获取 Blob 的二进制数据作为 ArrayBuffer。 stream():创建一个可读流&…

HAProxy 可观测性最佳实践

HAProxy 简介 HAProxy(High Availability Proxy)是一款广泛使用的高性能负载均衡器,支持 TCP 和 HTTP 协议,提供高可用性、负载均衡和代理服务。它特别适用于负载较大的 Web 站点,能够支持数以万计的并发连接&#xf…

软件测试|FIT故障注入测试工具——ISO 26262合规下的智能汽车安全验证引擎

FIT(Fault Injection Tester)是SURESOFT专为汽车电子与工业控制设计的自动化故障注入测试工具​,基于ISO 26262等国际安全标准开发,旨在解决传统测试中效率低、成本高、安全隐患难以复现的问题,其核心功能包括&#xf…

【计算机网络】应用层协议Http——构建Http服务服务器

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【Linux笔记】——进程间关系与守护进程 🔖流水不争,争的是滔滔不息 一、Http协…

[ctfshow web入门] web80

信息收集 过滤了php和data if(isset($_GET[file])){$file $_GET[file];$file str_replace("php", "???", $file);$file str_replace("data", "???", $file);include($file); }else{highlight_file(__FILE__); }解题 大小写…

移动安全Android——客户端数据安全

本地文件权限配置 测试流程 (1)手机运行待测APP应用,adb执行命令找到APP包名 adb shell dumpsys activity top|findstr ACTIVITY (2)adb shell 进入设备,以Root权限进入/data/data/package包名目录下 c…

AI生态警报:MCP协议风险与应对指南(下)——MCP Host安全

AI生态警报:MCP协议风险与应对指南(上)——架构与供应链风险https://blog.csdn.net/WangsuSecurity/article/details/148335401?sharetypeblogdetail&sharerId148335401&sharereferPC&sharesourceWangsuSecurity&spm1011.24…