奇妙的安全旅行之AES算法

奇妙的安全旅行之国密算法 hi,大家好,我是开发者FTD。今天我们来介绍一下我们国家密码局制定的加密算法 — 国密算法。 为什么要制定国密算法? 密码算法是保障信息安全的核心技术,尤其是我国最关键的银行业核心领域长期以来都是沿用MD5、3DES、SHA-256、RSA等这些国际通用的密码算法体系及相关标准。 随着金融安全上升到国家安全高度,近年来国家有关机关和监管机构站在国家安全和长远战略的高度提出了推动国密算法应用实施、加强行业安全可控的要求。摆脱对国外技术和产品的过度依赖,建设行业网络安全环境,增强我国行业信息系统的“安全可控” 阅读详情

hi,大家好,今天开始我们来介绍一下对称加密算法中的AES算法。

AES简介

AES(英语:Advanced Encryption Standard,缩写:AES),即高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,AES算法已然成为对称密钥加密中最流行的算法之一。严格来说 AES 是一种通用的加密标准,通常我们常说的 AES 算法是指 AES 标准的实现算法:Rijndael 算法。

Rijndael 算法

NIST 在 1997 年 09 月 12 日公开征集更高效更安全的替代 DES 加密算法,第一轮共有 15 种算法入选,其中 5 种算法入围了决赛,分别是 Rijndael、Serpent、Twofish、RC6 和 MARS。经过 3 年的验证、评测及公众讨论之后 Rijndael 算法最终入选。

Rijndael 算法是一个分组密码算法族,其分组长度包括 128 比特、160 比特、192 比特、224 比特、256 比特,密钥长度也包括这五种长度。 AES 标准算法是选取了分组长度为 128 比特,密钥长度为 128 比特、192 比特和 256 比特的三个版本,名称分别为 AES-128、AES-196 和 AES-256,这三个版本加密思路基本一样,只是密钥扩展算法的过程会稍有不同。

AES的基本结构

AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完所有组。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同。如下表所示:

算法 密钥长度(bit) 分组长度(bit) 加密轮数
AES-128 128 128 10
AES-192 192 128 12
AES-256 256 128 14
AES算法原理

AES算法主要有四种操作处理,分别是

  • 密钥加法层 (也叫轮密钥加,英文Add Round Key)
  • 字节代换层 (SubByte)
  • 行位移层 (Shift Rows)
  • 列混淆层(Mix Column)

AES算法的明文和密钥都是由16个字节组成的数据(当然密钥还支持192位和256位的长度,这里暂不讨论),它是按照字节的先后顺序从上到下、从左到右进行排列的。而加密出的密文读取顺序也是按照这个顺序读取的,相当于将数组还原成字符串的模样了,然后再解密的时候又是按照4x4数组处理的。AES算法在处理的轮数上只有最后一轮操作与前面的轮处理上有些许不同(最后一轮只是少了列混淆处理),在轮处理开始前还单独进行了一次轮密钥加的处理。在处理轮数上,我们只考虑128位密钥的10轮处理。接下来,就开始一步步的介绍AES算法的处理流程了。

AES算法流程图:

密钥加法层 (Add Round Key)

在密钥加法层中有两个输入的参数,分别是明文和子密钥k[0],而且这两个输入都是128位的。k[0]实际上就等同于密钥k,具体原因在密钥扩展生成中进行介绍。我们前面在介绍扩展域加减法中提到过,在扩展域中加减法操作和异或运算等价,所以这里的处理也就异常的简单了,只需要将两个输入的数据进行按字节异或操作就会得到运算的结果。图示:

字节代换层 (SubByte)

字节代换层的主要功能就是让输入的数据通过S_box表完成从一个字节到另一个字节的映射,这里的S_box表是通过某种方法计算出来的,具体的计算方法在此不做详述,我们主需要知道如何使用S_box结果即可。S_box表是一个拥有256个字节元素的数组,可以将其定义为一维数组,也可以将其定义为16·16的二维数组,如果将其定义为二维数组,读取S_box数据的方法就是要将输入数据的每个字节的高四位作为第一个下标,第四位作为第二个下标,略有点麻烦。这里建议将其视作一维数组即可。逆S盒与S盒对应,用于解密时对数据处理,我们对解密时的程序处理称作逆字节代换,只是使用的代换表盒加密时不同而已。

S盒 :

逆S盒 :

加密图示:

行位移 (Shift Rows)

行位移操作最为简单,它是用来将输入数据作为一个4·4的字节矩阵进行处理的,然后将这个矩阵的字节进行位置上的置换。ShiftRows子层属于AES手动的扩散层,目的是将单个位上的变换扩散到影响整个状态当,

奇妙的安全旅行之加密算法(完整版) hi,大家好,我是开发者FTD。之前我在公众号写了一个工作中常用加密算法系列的文章终于肝完了,为了方便小伙伴们查看和收藏,我将这个系列汇集整理成了一个PDF文档,有需要的小伙伴可以关注公众号,在公众号后台回复 加密算法 就可以下载了。 优快云的小伙伴也可以直接在站内资源下载,地址为:https://download.youkuaiyun.com/download/ForTheDevelopers/15309483 加密算法属于比较冷门的知识内容,但是在我们的工作和生活中确是越来越重要的一部分了,了解这部分的知识还是非 阅读详情

相关推荐

奇妙的安全旅行之加密算法概述

前言 hi,大家好呀,信息安全作为当前社会中比较重要的一个课题,已经覆盖了人们生活的方方面面,虽然有时候我们可能并没有意识到,其实信息安全防护已经在背后默默的保护我们的信息安全了。例如,当你在互联网上浏览网站时;当你准备注册或者登陆一个网站,需要输入密码时;当你在购物网站买商品进行支付时;当你到银行取钱时… 可以说信息安全是关系国家、城市信息、行业用户、百姓利益的关键问题,尤其是数据安全,身份隐私等信息的安全对于每个人都很重要。互联网最初,大家的安全意识还没有那么高,很多信息都是明文传输,甚至数据库中也是明

ForTheDevelopers的博客 582

奇妙的安全旅行之DES算法(二)

hi,大家好,上一节我们详细介绍了对称加密算法DES的基本内容,由于明文的长度不固定,而加密算法只能处理特定长度的一块数据,所以就需要对比较长的明文进行分组后再加密,但是分组后,最后一组的长度可能又会出现位数长度不够的情况,所以就又需要根据填充模式来对最后一组报文进行填充。 对称加密的分组模式 对称加密一共有五种分组模式,下面我们来介绍一下。 1. ECB - Electronic Code Book, 电子密码本模式 优点: 简单,效率高 有利于并行计算 误差不会被传送 缺点: 密文有规律,容易被

ForTheDevelopers的博客 453

奇妙的安全旅行之DES算法(一)

hi,大家好,从今天开始我们介绍加密算法中的对称加密算法。相信大家看了前几篇文章,已经对摘要算法的使用已经有了比较深的认识,摘要算法由于其算法特性,只能单向加密,无法对数据反向解密,这时对称加密算法就出现了。对称算法主要有DES、3DES 和 AES,今天我们重点介绍一下对称加密算法中的DES 算法。 DES 算法介绍 DES (Data Encryption Standard)算法是世界上最常用的加密算法。在很长时间内,许多人心目中“密码生成”与DES一直是个同义词。尽管后来有个叫Electronic F

ForTheDevelopers的博客 593

解锁边缘AI新可能:在Jetson Nano上实战部署Qwen-1.8B大模型

本文详细介绍了如何在Jetson Nano开发板上实战部署Qwen-1.8B大模型,解锁边缘AI的新可能。通过量化优化和编译调整,使这款轻量级大模型能在资源受限的环境中流畅运行,适用于智能客服、教育机器人等场景。文章包含硬件配置、模型量化、性能调优等实用技巧,帮助开发者在边缘设备上实现AI应用部署。

weixin_30567225的博客 487

RK3588 MIPI摄像头数据链路全解析:从物理差分信号到V4L2设备节点

本文深入解析RK3588平台MIPI摄像头数据链路,从物理差分信号到V4L2设备节点的完整流程。详细介绍了MIPI D-PHY信号处理、CSI-2协议解析、CIF格式转换及V4L2设备节点注册等关键技术,并结合设备树配置和调试技巧,帮助开发者优化摄像头数据采集性能。

weixin_30772105的博客 479

【GPIO模拟串口通信协议】

由于这段时间搞了个安卓相关的项目,需要和安卓进行Uart通信。但是选用的芯片并没有自带uart功能,所以在充分评估项目后,考虑波特率不高的情况下,决定使用GPIO去模拟串口通信协议了。

学海无涯苦作舟 2638

从立创商城到Cadence:手把手教你实现封装格式的精准迁移

本文详细介绍了如何从立创商城获取元器件封装并精准迁移至Cadence Allegro的全流程。通过实战案例MAX31865ATP+T芯片,逐步解析Altium Designer格式转换、Cadence环境配置、封装导入验证等关键步骤,提供常见问题解决方案和效率提升技巧,帮助硬件工程师实现封装格式的高效迁移。

weixin_42519985的博客 216

域控制器开发避坑实录:从硬件设计到软件集成的5个关键挑战

本文深入剖析了域控制器开发中的5大关键挑战,从硬件选型到软件集成,涵盖智能驾驶芯片选择、实时性优化、AUTOSAR架构适配等核心问题。通过实战案例和数据对比,为工程师提供避坑指南,助力提升开发效率和系统可靠性。

weixin_29258297的博客 395

IEEE LaTeX模板中algorithm排版避坑指南:如何优雅地嵌入算法描述?

本文详细解析了在IEEE LaTeX模板中优雅排版algorithm的实用技巧,包括基础配置、高级自定义及常见问题解决方案。通过嵌套环境与[H]参数的应用,帮助研究者克服IEEEtran模板对算法排版的限制,实现专业且美观的算法呈现。

weixin_28340315的博客 408

ADRV9026初始化避坑指南:手把手调试PostMcsInit常见故障

本文详细解析了ADRV9026多片同步初始化过程中的PostMcsInit常见故障,包括时钟校准失败、JESD链路建立问题和ARM核通信异常等。通过实际项目经验,提供了硬件检查清单、软件配置要点和分层诊断方法,帮助工程师快速定位和解决问题,提升系统稳定性。

hadoop5ranger的博客 620

如何在R中高效安装ropls及其依赖包

本文详细介绍了在R语言中高效安装ropls包及其依赖的完整流程。作为Bioconductor生物信息学分析包,ropls的安装需通过BiocManager管理器进行。文章提供了标准安装步骤、跨系统避坑指南及安装后验证方法,帮助用户解决R版本、编译环境和网络镜像等常见问题,确保代谢组学数据分析工具顺利部署。

efc123456的博客 908

通达信量化打板选股指标公式源码副图

X_2:=3*LOW;X_13:=4;X_14:=3;X_15:=2;X_16:=1;

gpzb7的博客 4485

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 奇妙的安全旅行之DES算法(二)
下一篇: 奇妙的安全旅行之RSA算法
我是开发者FTD
博客等级 码龄6年 13粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值