文章总结: 这篇文章详细介绍了对称加密算法中的DES和AES原理,包括DES的初始置换、分组加密、子密钥生成、S盒和P盒替换等步骤,以及AES的密钥轮询、字节替代、行移动、列混合等流程。文章通过流程图、表格和代码示例清晰地展示了两种加密算法的工作原理,对于理解数据加密技术具有重要价值。
综合评分: 88
文章分类: 应用安全,数据安全,网络安全,技术标准,安全建设
信息安全:对称加密与非对称加密算法原理详解
谈思实验室
2025年11月20日 18:06
点击上方蓝字谈思实验室
获取更多汽车网络安全资讯
众所周知数据对于一个公司来说,非常重要,一旦数据泄露,公司将面临非常大的威胁,数据加密非常重要。
对称加密是指加密和解密使用相同密钥的加密算法,常见的对称加密算法有DES,DES3,AES加密算法。对称加密由于其加解密速度快,常被用于大量的数据加密场景,还有对传输效率要求高的场景如VPN之间的传输,但是由于其密匙不方便保存,所以适合于内部系统。
01
DES加密算法
DES加密算法是一种分组加密算法,通过将输入的明文按64位一组,进行分组加,加密过程分为初始置换明文,分组明文,生成子密匙,密匙与明文加密,经过S盒替(如表1.14所示),P盒替换(如图1.16所示),置换后的密文与原32位明文加密。具体流程图如下图1.1 DES加密流程图
图1.1 DES流程图
初始置换:初始置换是只将输入的64位明文,按照一个置换表进行置换位置,具体置换规则:初始数据里面的64是1号位,置换表的1则到了第40这个位置,那么64置换之后就到了第40这个位置、63是原来的2号位,在置换表里面是第8号位,所以63经过置换表则到了第8位,其他的位置执行同样的操作,具体操作如表1.1,表1.2,表1.3:
表1.1 初始数据表
表1.2 置换表
表1.3 置换后数据
拿到置换后的数据后,将明文分组左右两组。将初始置换之后的数据按前32位为左边L0,后32位为右边R0。具体分组如表1.4,1.5.
表1.4 左边L0
表1.5 右边R0
主密匙是用户定义的一个密匙,将一个主密匙生成16个子密匙,每一次操作用一个密匙。用户设置的一个64位key,我们将其忽略第8,16,24,32,40,48,56,64奇偶检验位。得到一个56位key,将其进行移位操作,再进行压缩置换就得到具体加密的KEY。具体操作如表1.6 所示
表1.6 移位操作是移位表
从表中我们可以知道,第一轮是左移一位,第三轮是左移两位,后面一堆位数安按照1.6所示即可。具体移位如表1.7,表1.8
表1.7 主密匙表
表1.8 左移一位后的密匙
移位之后进行压缩置换,将56位的密匙进行48位的置换表置换,得到48位密匙舍去8位,如表1.9,1.10,表1.11所示
表1.9 密匙
表1.10 48位置换表
表1.11 置换之后得到的数据KEY1
得到48位密匙后,因为明文分组是32位,所以对明文进行扩充置换成48位,以下操作是对明文进行扩充置换,对于扩充后的明文我们可以发现,他中间四列是原来的明文,并没有修改,增加的第一列是原明文的最后一列从倒数排列,新添加的第后一列,则是第一列的倒数。具体如表1.12,表1.13所示。
表1.12 左边明文L0
表1.13 扩充之后的明文L0
现在得到48位密匙和48位数据,就可以进行异或加密操作了。异或操作后面拿到的数据是加密后的数据,我们对此数据进行S盒替换和P盒替换。
S盒替换是将48位的数,分组8组,一组6位,进入S盒,一个S盒6位输入4位输出,及48位出入,进入8个S盒输出只有32位。具体替换如表1.14。
表1.14 S0盒
例如:输入为101110 那么他的第一位和最后一位组合10转换位10进制则为2及第2行,中间四为0111转为10进制及为7及第7列,所以第2行,第7列及为2转为2进制及为0010,所以输入101110,输出0010,S盒替换完成。经过S盒换以后就要经过P盒替换了,具体替换过程如下表1.15,1.16,1.17所示
表1.15 S盒替换后的数据
表1.16 P盒
表1.17 P盒置换后的数据
现在我们已经拿到P盒置换后的数据了,再跟我们第一次分组生成的32位左边的数据进行异或操作,这次拿到的数据就是我们第一轮加密后的数据,再进行左右互换,进行同样的加密操作,连续操作16次,加密就算完成了。
加密完成了,接下来就是解密了,解密和加密是同样的操作,输入64位明文,进行初始置换,将KEY倒着进行加密,密匙移位,加密是向左移,那么解密就是向右移,执行同样的操作就可以解密进行解密操作。
02
AES加密算法
AES加密算法是分组加密,每一组是16字节,是目前主流的高级加密算法。他的加密过程主要分为密匙轮询,字节替代,行移动,列混合,密匙加轮…….以上操作重复10次,输出的即是加密的数据,具体流程图如1.2所示
图2.1 AES加密流程图
密匙加轮:用密匙与原文进行异或操作,原文是128位,密文也是128位,首先将主密匙与原文进行异或操作,后面再用主密匙生成40位子密匙。密匙生成过程如下所示:
KEY = 3C A1 0B 21 57 F0 19 16 90 2E 13 80 AC C1 07 BD
初始密匙:
W[0]=3C A1 0B 21
W[1]=57 F0 19 16
W[2]=90 2E 13 80
W[3]=AC C1 07 BD
生成密匙算法:
1.如果i不是4的倍数,那么第i列用如下公式:
W[i]=W[i-4] XOR Wi-1
2.如果i是4的倍数,那么第i列用如下公式:
W[i]=W[i-4] XOR T(W[i-1])
解释一下T()函数:由三部分组成,字循环,字节替代,轮常量代替异或。
a.字循环:将1个字中的4个字节循环左移1个字节。即将输入字[a0, a1, a2, a3]变换成 [a1,a2,a3,a0]。
b.字节代换:对字循环的结果使用S盒进行字节代换(具体S盒如图2.2所示)。
c.轮常量异或:将前两步的结果同轮常量进行异或。具体如表2.1所示
表2.1 轮询常量表
例如:
初始密匙
W[0]=3C A1 0B 21
W[1]=57 F0 19 16
W[2]=90 2E 13 80
W[3]=AC C1 07 BD
计算W[4],W[5],W[6],W[7]
求W[4]的时候,因为4是4的倍数,所以,我们先要求T(W[3])
W[3]= AC C1 07 BD
左移一位 得到 C1 07 BD AC
进入S和字节替换
进S盒替换时,例如替换C1,C则是行,1则是列,找到第C行第1列即可以找到替换的数字(16进制的数),S盒具体如图1.3所示
图2.2 S盒
C1在S盒中对应78,
07在S盒中对应C5
BD在S盒中对应7A
AC在S盒中对应 91
所以经过第二步S盒替换变成了78,C5,7A,91
(3).将78 C5 7A 91 XOR 01 00 00 00 = 79 C5 7A 91
所以计算密匙如下:
W[4]= W[0] XOR T(W[3] ) = 3C A1 0B 21 XOR 79 C5 7A 91 = 45 64 71 B0
W[5]= W[1] XOR W[4] = 57 F0 19 16 XOR 45 64 71 B0 = 12 94 68 A6
W[6]= W[2] XOR W[5] = 90 2E 13 80 XOR 12 94 68 A6 = 82 BA 7B 26
W[7]= W[3] XOR W[6] = AC C1 07 BD XOR 82 BA 7B 26 = 2E 7B 7C 9B
同样的方法计算其他密匙。
有了密匙,将明文与密匙异或运算,接下来进行字节替代。例如,假设我们明文与密匙加轮得到的数据是abcdefghijklmnop具体如表2.2,2.3,2.4所示
表2.2 轮询后的数据
表2.3 转化为16进制
表2.4S盒替代之后的数据
S盒如图1.3所示,如果替换后出来本就是16进制的数则不需要转换,如果不是将a转为16进制0x61则在S盒中找到第6行第1个数,这个数就是要替换的数,替换其他数也是同样的操作。
接下来就是行移动,列混合就是将每一列移动不同的位数,第一列不移动,第二列移动一位,第三列移动两位,第四列移动三位。具体一位如下表2.5,2.6:
表2.5 移位前的数据
表2.6 移位后的数据
行移动后就是列混合了,列混合就是将行移动后的矩阵乘一个固定矩阵。具体如下表2.7,2.8所示
表2.7行移动后的数据
表2.8先转10进制
转10进制进行与固定矩阵相乘
得到结果矩阵后,将其转为16进制,到此第一轮加密结束,后续只需将结果矩阵当成第2个KEY进行执行同样的加密操作。
解密操作和加密操作一样,用最后一组密匙对密文进行密匙轮询,再用逆S盒进行字节替代,行移动是向右移动,列混合是乘固定矩阵的逆矩阵,后面操作与前面操作一样,轮询10次即可解密回来。
AES加密的代码实现,由于代码过多,只列出主要加密,解密代码,具体代码如图2.3,2.4,2.5,2.6所示
AES加密代码
图2.3 AES加密代码
AES解密代码
图2.4 AES解密代码
AES输出代码
图2.5 AES输出代码
图2.6 AES加密输出,解密回来结果
来源:知乎@知了乎
https://zhuanlan.zhihu.com/p/147009696
谈思-汽车出海安全合规(欧洲)
交流群
谈思 AutoSec Europe 峰会旨在搭建一个能融汇全球视野与中国实践、连接技术前沿与落地应用的国际性专业平台,以助力中国汽车应对在出海过程中面临的网络与数据安全合规痛点。从前沿技术研讨、合规要点解析到经验交流,都将通过本平台为您提供持续支持。社群已超过200人,需邀请加入,如需入群,欢迎添加社群小助手微信taaslabs01。
谈思-SDV&AIDV技术出海
交流群
诚邀行业同仁加入谈思SDV&AIDV出海技术交流群,聚焦软件定义汽车、AI定义汽车、下一代EEA、智能座舱、智能驾驶、软件架构、域控制器开发、芯片技术、软件工具等核心议题,欢迎大家加群交流探讨~~
end
精品活动推荐
AutoSec系列沙龙
专业社群
部分入群专家来自:
新势力车企:
特斯拉、合众新能源-哪吒、理想、极氪、小米、宾理汽车、极越、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯……
外资传统主流车企代表:
大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚……
内资传统主流车企:
吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用……
全球领先一级供应商:
博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、赢彻科技、潍柴集团、地平线、紫光同芯、字节跳动、……
二级供应商(500+以上):
Upstream、ETAS、Synopsys、NXP、TUV、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信大捷安、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、软安科技、浙江大学……
人员占比
公司类型占比
文章
不要错过哦,这可能是汽车网络安全产业最大的专属社区!
首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:谈思实验室 《信息安全:对称加密与非对称加密算法原理详解》