【AES加密算法介绍】
文章目录AES 概述AES 的工作原理块加密密钥长度操作模式AES 的加解密流程AES 的优缺点优点缺点Java 中的 AES 实现Python 中的 AES 实现AES 概述高级加密标准Advanced Encryption Standard简称 AES是美国国家标准与技术研究院NIST于 2001 年发布的一种对称加密算法。它被设计为替代传统的 DESData Encryption Standard以解决其密钥长度过短和安全性不足的问题。AES 是一种基于分组的加密算法支持 128 位、192 位和 256 位的密钥长度广泛应用于无线通信、银行交易、云存储等场景。AES 的工作原理块加密AES 是一种分组密码每次处理固定大小的数据块128 位 16 字节。如果输入数据不足 128 位则需要填充如 PKCS5/7 填充。密钥长度AES 支持 3 种密钥长度AES-128密钥长度为 128 位。AES-192密钥长度为 192 位。AES-256密钥长度为 256 位。密钥长度越长加密的强度越高但同时也会增加计算开销。操作模式AES 常用的操作模式包括ECBElectronic Codebook每个块独立加密容易遭受模式分析攻击不推荐使用。CBCCipher Block Chaining每个块依赖前一个块的加密结果需要初始化向量IV。CFBCipher Feedback加密过程基于流式处理适合逐字节加密。OFBOutput Feedback生成伪随机数流用于加密可有效防止错误传播。CTRCounter使用计数器加密每次加密独立支持并行处理。AES 的加解密流程初始密钥加法将明文与初始密钥进行 XOR 运算。多轮迭代Nr 轮字节代换SubBytes使用 S-box 对数据进行非线性替换。行移位ShiftRows循环左移数据的每一行。列混淆MixColumns将数据按列混淆以增加扩散效果解密时反向操作。轮密钥加法AddRoundKey将当前密钥与数据 XOR。最后一轮与普通轮次类似但省略了列混淆。AES 的优缺点优点高效AES 采用迭代设计算法效率高。安全AES 的设计使其能抵抗已知的密码分析攻击。灵活支持多种密钥长度和操作模式适用范围广。缺点密钥管理复杂对称加密要求发送方和接收方共享密钥密钥分发较困难。不适合处理长消息需要结合操作模式分块处理。Java 中的 AES 实现importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;importjava.util.Base64;publicclassAESExample{publicstaticvoidmain(String[]args)throwsException{StringdataHello, AES!;// 生成密钥KeyGeneratorkeyGenKeyGenerator.getInstance(AES);keyGen.init(128);// 密钥长度SecretKeysecretKeykeyGen.generateKey();byte[]keyBytessecretKey.getEncoded();// 加密CiphercipherCipher.getInstance(AES/ECB/PKCS5Padding);cipher.init(Cipher.ENCRYPT_MODE,newSecretKeySpec(keyBytes,AES));byte[]encryptedcipher.doFinal(data.getBytes());System.out.println(Encrypted: Base64.getEncoder().encodeToString(encrypted));// 解密cipher.init(Cipher.DECRYPT_MODE,newSecretKeySpec(keyBytes,AES));byte[]decryptedcipher.doFinal(encrypted);System.out.println(Decrypted: newString(decrypted));}}Python 中的 AES 实现fromCrypto.CipherimportAESfromCrypto.Randomimportget_random_bytesimportbase64defpad(data):# PKCS7 填充pad_len16-len(data)%16returndatabytes([pad_len]*pad_len)defunpad(data):# 去掉填充returndata[:-data[-1]]# 加密keyget_random_bytes(16)# 128 位密钥cipherAES.new(key,AES.MODE_ECB)datapad(bHello, AES!)encryptedcipher.encrypt(data)print(Encrypted:,base64.b64encode(encrypted).decode())# 解密cipherAES.new(key,AES.MODE_ECB)decryptedunpad(cipher.decrypt(encrypted))print(Decrypted:,decrypted.decode())

相关新闻

高清4k手机电脑壁纸

高清4k手机电脑壁纸

网页实例up主——网站强力推荐https://haowallpaper.com

2026/7/4 2:06:16 阅读更多 →
专科生必看!当红之选的AI论文平台 —— 千笔写作工具

专科生必看!当红之选的AI论文平台 —— 千笔写作工具

你是否曾为论文选题而发愁,又在撰写过程中频频卡壳?文献查找耗时费力,格式排版总出错,查重率又让人焦虑不安。面对这些学术写作的常见难题,许多同学都感到力不从心。而如今,一款专为学生量身打造的AI论文写…

2026/7/2 20:19:30 阅读更多 →
口碑好的数字人视频编辑公司

口碑好的数字人视频编辑公司

“我们投了20万做直播,结果连成本都没收回来!” “请个主播月薪2万,还经常请假,流量全靠运气……” “多平台运营要招3个人,一个月工资就够买辆代步车了……”这些抱怨,是不是像极了你的日常?在…

2026/7/3 4:08:56 阅读更多 →

最新新闻

[实战指南] 精准定位与安全解除:Ubuntu dpkg lock-frontend 进程锁冲突排查

[实战指南] 精准定位与安全解除:Ubuntu dpkg lock-frontend 进程锁冲突排查

1. 理解dpkg锁冲突的本质当你正在Ubuntu系统上愉快地敲着命令准备安装软件时,突然屏幕上跳出"dpkg: 错误: 另外一个进程已经为 dpkg frontend lock 加锁"的红色警告,那种感觉就像你准备开门回家却发现钥匙孔被堵住一样令人抓狂。这个错误背后其…

2026/7/4 2:05:28 阅读更多 →
Cadence 17.4 实战:从设计规则到Gerber输出的PCB设计全流程解析

Cadence 17.4 实战:从设计规则到Gerber输出的PCB设计全流程解析

1. Cadence 17.4入门:从零搭建PCB设计环境刚接触Cadence 17.4时,我花了整整三天才把环境配置明白。现在回头看,其实只要抓住几个关键点就能快速上手。首先得把PSMPATH(封装库路径)和PADPATH(焊盘库路径&…

2026/7/4 2:01:27 阅读更多 →
Claude Code实战:30分钟构建Node.js CLI任务管理器

Claude Code实战:30分钟构建Node.js CLI任务管理器

这次我们来看一个能让你用自然语言直接构建完整应用的工具:Claude Code。它来自 Anthropic,是 Claude 家族中专门为软件工程设计的 AI 助手。核心思路很简单:你描述你想要的应用功能,它来生成代码、处理大部分实现细节。这听起来像…

2026/7/4 2:01:27 阅读更多 →
ICM-42688-P运动传感器与PIC18LF27K42在工业自动化中的应用

ICM-42688-P运动传感器与PIC18LF27K42在工业自动化中的应用

1. ICM-42688-P运动传感器的技术解析ICM-42688-P是一款六轴运动传感器,集成了三轴陀螺仪和三轴加速度计。这款传感器在工业应用中表现出色,主要得益于以下几个关键技术特性:1.1 高精度运动检测能力ICM-42688-P的陀螺仪量程可达2000dps&#x…

2026/7/4 1:59:26 阅读更多 →
WinDiskWriter:在Mac上轻松制作Windows启动盘的专业解决方案

WinDiskWriter:在Mac上轻松制作Windows启动盘的专业解决方案

WinDiskWriter:在Mac上轻松制作Windows启动盘的专业解决方案 【免费下载链接】windiskwriter 🖥 Windows Bootable USB creator for macOS. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. 👾 UEFI & Le…

2026/7/4 1:57:25 阅读更多 →
SpringBoot内嵌Tomcat防护Slow HTTP攻击实战指南

SpringBoot内嵌Tomcat防护Slow HTTP攻击实战指南

1. 项目背景与问题定位去年在给某金融系统做压力测试时,我们突然发现当并发连接数达到2000左右时,整个SpringBoot应用会完全停止响应。通过netstat命令查看,发现有大量TCP连接卡在CLOSE_WAIT状态。这个现象让我意识到:Tomcat的默认…

2026/7/4 1:55:25 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻