基于AES的图像加解密算法matlab仿真
目录✨1.前言2.算法测试效果图预览3.算法运行软件版本✅4.部分核心程序5.算法理论概述5.1 密钥扩展5.2 AES核心分组加密变换1.轮密钥加2.字节代换3.行移位4.列混合5.3 密文重构与图像生成6.算法完整程序工程✨1.前言基于AES的图像加解密核心逻辑为先将图像解析为一维字节数据流按照16字节为单位划分加密分组使用AES标准轮函数完成逐分组加密最终重组字节流得到加密图像解密过程为加密的逆运算利用相同密钥对密文字节流反向运算还原原始像素数据与图像。本文以应用最广的AES-128密钥长度128位共10轮加密运算为基础完整拆解算法原理、执行流程并配套对应数学公式同时结合图像数据特性说明适配逻辑。2.算法测试效果图预览3.算法运行软件版本matlab2024B✅4.部分核心程序% 定义函数func_SBOX输入为vargin输出为S盒SBOX及其逆S盒invSBOXfunction [SBOX,invSBOX] func_SBOX(vargin)% 定义模多项式这是AES算法中用于有限域GF(2^8)运算的不可约多项式mod_pol bin2dec(100011011);% 初始化逆元数组第一个元素为0通常在AES中0没有逆元inverse(1) 0;% 计算1到255的所有非零元素的逆元for i 1 : 255% 调用func_inverse函数计算i的逆元并存入inverse数组inverse(i1) func_inverse(i, mod_pol);end% 构建S盒for i 1 : 256% 调用func_aff函数计算逆元inverse(i)的仿射变换并存入S盒SBOXSBOX(i) func_aff(inverse(i));end% 计算S盒的逆S盒invSBOXinvSBOX func_INV_SBOX(SBOX);end5.算法理论概述AES属于对称分组密码加密与解密使用完全相同的密钥仅运算顺序与逆变换存在差异。AES-128规定分组长度128位、密钥长度128位整体包含初始轮密钥加、9轮完整加密轮、1轮收尾轮总计10轮变换。AES的所有运算均基于有限域GF (2⁸)展开这是整个算法的数学基础。计算机中单个字节为8位二进制数取值范围0~255恰好对应GF (2⁸)中的元素。有限域GF(2⁸)定义了字节之间的加法、乘法规则区别于传统十进制运算也是 AES 非线性混淆、线性扩散的核心支撑。图像数据与AES的适配规则单通道灰度图像每个像素占1字节8 位彩色RGB图像单个像素占3字节24位。无论哪种图像都会先将二维像素矩阵按行优先转换为一维字节数组再以16字节128位为一个分组进行切割。若图像总字节数无法被16整除需在末尾补充填充字节解密后再剔除填充数据保证图像完整性。5.1 密钥扩展AES-128原始密钥为16字节128位记原始密钥数组Key[k0,k1,…,k15]。加密共11组轮密钥初始1组10轮运算各1组每组轮密钥16字节密钥扩展的作用是由原始密钥生成全部轮密钥运算基于字4字节为1字操作。定义字wi[k4i,k4i1,k4i2,k4i3]16 字节原始密钥分为4个字w0,w1,w2,w3最终需生成44个字w0∼w43。密钥扩展分为两种递推规则其中RotWord为字循环左移1字节SubWord为对字内4个字节分别做字节代换Rcon为轮常量数组是GF(2⁸)下的固定常量用于打破密钥的线性规律。密钥扩展完成后按每4个字拼接为16字节轮密钥供每一轮加密使用。5.2 AES核心分组加密变换AES-128加密流程初始轮密钥加→9轮字节代换行移位列混合轮密钥加→第10轮字节代换行移位轮密钥加第10轮无列混合。1.轮密钥加该变换将当前4×4状态矩阵与对应轮密钥逐字节做GF(2⁸)加法是每一轮必有的基础操作。设状态矩阵元素为state[r][c]轮密钥矩阵元素为key[r][c]r∈{0,1,2,3}为行号c∈{0,1,2,3}为列号运算公式初始轮密钥加使用第1组轮密钥后续每一轮依次使用后续轮密钥。该操作实现密钥与明文数据的混合增加加密随机性。2.字节代换字节代换是AES唯一的非线性变换依靠固定S盒替换表完成单字节映射破坏数据线性特征抵抗线性密码分析。状态矩阵中每一个字节独立完成代换设原字节为x代换后字节为yS盒的底层数学实现分为两步首先求字节x在GF(2⁸)中的乘法逆元x−1规定0的逆元为0再对逆元做仿射变换仿射变换公式字节代换作用于状态矩阵所有元素完成后矩阵尺寸保持4×4不变。3.行移位行移位是线性移位变换对状态矩阵的每一行执行循环左移目的是实现同行数据的横向扩散。4 行移位规则固定第0行不移位第1行左移1字节第2行左移2字节第3行左移3字节。设原矩阵第r行第c列元素为state[r][c]移位后元素为state′[r][c]公式行移位将单个像素对应的字节分散到不同列为后续列混合的全局扩散打下基础。4.列混合列混合是高强度线性扩散变换对状态矩阵的每一列独立运算将一列4个字节线性组合让单个字节的变化扩散到整列是 AES 实现雪崩效应的核心。该运算基于GF(2⁸)乘法与加法设原始列向量为a[a0,a1,a2,a3]T变换后列向量为b[b0,b1,b2,b3]T固定变换矩阵与运算公式矩阵中01、02、03均为GF(2⁸)中的常量乘法遵循有限域乘法规则。列混合仅在前9轮加密中使用最后一轮加密省略该变换。5.3 密文重构与图像生成所有16字节分组完成AES加密后将每个4×4状态矩阵还原为16字节一维数组按分组顺序拼接为完整密文字节流。剔除预处理阶段的填充字节将一维密文字节流重新还原为二维像素矩阵最后写入图像文件得到加密后的图像。加密后的图像像素完全随机视觉上呈现杂乱噪点无法识别原始内容。6.算法完整程序工程OOOOOOOOO关注GZH后输入回复0048