题解:
1.分析:
第一轮使用的轮密钥是W[4]、W[5]、W[6]、W[7]
w[i](4≤i≤43)求法:
(1)i不为4的倍数
w[i] = w[i-1] ⊕w[i-4]
(2)为4的倍数
w[i]=SubWord(RotWord(w[i-1]))⊕w[i-4]⊕Rcon[i/4]
解释:
①RotWord:将w[i-1]的4个字节循环上移一个字节
②SubWord:基于S盒对输入字的每个字节进行代换
③将步骤②的结果与w[i-4]异或
④将步骤③的结果再与轮常量Rcon[i/4]异或
2.按顺序每四个一列,作为初始轮密钥(W[0]、W[1]、W[2]、W[3])
W[0] | W[1] | W[2] | W[3] |
2B | 28 | AB | 09 |
7E | AE | F7 | CF |
15 | D2 | 15 | 4F |
16 | A6 | 88 | 3C |
3.求W[4]
由于4是4的倍数故:
w[4]=SubWord(RotWord(w[3]))⊕w[0]⊕Rcon[1]
(1)将w[3]的4个字节循环上移一个字节
09 | → | CF |
CF | 4F | |
4F | 3C | |
3C | 09 |
(2)基于S盒对输入字的每个字节进行代换
S盒:
用法:
如9A,对应S盒就是9行A列,即B8
代换结果:
CF | → | 8A |
4F | 84 | |
3C | EB | |
09 | 01 |
(3)将结果与w[0]异或
将S盒的结果转换为二进制
1000 | 1010 |
1000 | 0100 |
1110 | 1011 |
0000 | 0001 |
将W[0]转换为二进制
W[0]:
2B |
7E |
15 |
16 |
结果:
0010 | 1011 |
0111 | 1110 |
0001 | 0101 |
0001 | 0110 |
异或
算法解释:异或运算(exclusive OR,简称XOR或EX-OR)是一种逻辑运算,其结果为真(1)的条件是两个操作数中不同(如0与1)。如果两个操作数相同(如0与0,1与1),则异或运算的结果为假(0)。
每一个数一一对应异或得到:
1010 | 0001 |
1111 | 1010 |
1111 | 1110 |
0001 | 0111 |
(4)将异或的结果再与轮常量Rcon[1]异或
轮常量表:
这里4/4=1,所以选择Rcon[1],并将其转化为二进制:
0000 | 1111 |
0000 | 0000 |
0000 | 0000 |
0000 | 0000 |
之前异或的结果:
1010 | 0001 |
1111 | 1010 |
1111 | 1110 |
0001 | 0111 |
异或
1010 | 1110 |
1111 | 1010 |
1111 | 1110 |
0001 | 0111 |
转为16进制
AE |
FA |
FE |
17 |
4.求W[5]
5不为4的倍数,故:
w[5] = w[4] ⊕w[1]
(1)W[4]转二进制
1010 | 1110 |
1111 | 1010 |
1111 | 1110 |
0001 | 0111 |
(2)W[1]转二进制
W[1] |
28 |
AE |
D2 |
A6 |
0010 | 1000 |
1010 | 1110 |
1101 | 0010 |
1010 | 0110 |
(3)异或
1000 | 0110 |
0101 | 0100 |
0010 | 1100 |
1011 | 0001 |
转为16进制:
A6 |
54 |
2C |
B1 |
5.求W[6]
6不为4的倍数,故:
w[6] = w[5] ⊕w[2]
(1)W[5]转二进制
1000 | 0110 |
0101 | 0100 |
0010 | 1100 |
1011 | 0001 |
(2)W[2]转二进制
W[2] |
AB |
F7 |
15 |
88 |
1010 | 1011 |
1111 | 0111 |
0001 | 0101 |
1000 | 1000 |
(3)异或
0010 | 1101 |
1010 | 0011 |
0011 | 1001 |
0011 | 1001 |
转为16进制:
2D |
A3 |
39 |
39 |
6.求W[7]
7不为4的倍数,故:
w[7] = w[6] ⊕w[3]
(1)W[6]转二进制
0010 | 1101 |
1010 | 0011 |
0011 | 1001 |
0011 | 1001 |
(2)W[3]转二进制
W[3] |
09 |
CF |
4F |
3C |
0000 | 1001 |
1100 | 1111 |
0100 | 1111 |
0011 | 1100 |
(3)异或
0010 | 1000 |
0110 | 1100 |
0111 | 0110 |
0000 | 0101 |
转为16进制:
28 |
6C |
76 |
05 |
7.整合结果
W[4] | W[5] | W[6] | W[7] |
AE | A6 | 2D | 28 |
FA | 54 | A3 | 6C |
FE | 2C | 39 | 76 |
17 | B1 | 39 | 05 |
8.相关知识(可看可不看)
密码学作为信息安全的核心学科,涉及信息的加密保护、安全认证等多个方面,是保障网络空间安全的重要基石。以下是对密码学普及知识的详细阐述,内容涵盖密码学的基本概念、发展历程、主要技术、应用场景以及未来趋势等方面。
一、密码学基本概念
密码学是研究如何保护信息机密性、完整性和可用性的科学,通过采用特定变换的方法对信息等进行加密保护和安全认证。这些特定变换包括明文和密文相互转化的各种数学方法和实现机制,旨在确保信息在传输、存储和处理过程中不被未授权访问、篡改或破坏。
二、密码学发展历程
密码学的发展历史悠久,大致可以分为以下几个阶段:
-
古典密码学阶段(古代到19世纪末):这一阶段的密码学主要依赖于算法本身的保密性,如凯撒密码、维吉尼亚密码等。这些密码虽然简单,但在当时的技术条件下难以被破解。
-
近代密码学阶段(20世纪初到1949年):随着数学和计算技术的发展,密码学逐渐从依赖算法保密转向依赖密钥保密。这一时期出现了许多著名的密码算法,如恩尼格玛机(Enigma)等。
-
现代密码学阶段(1949年至今):1949年,香农(Shannon)发表了《保密系统的通信理论》,标志着现代密码学的诞生。此后,密码学逐渐成为一门独立的学科,并广泛应用于各个领域。现代密码学主要依赖于数学和计算复杂性理论,如对称密码、公钥密码等。
-
公钥密码学阶段(1976年至今):1976年,Diffie和Hellman发表了《密码学的新方向》,提出了公钥密码学的概念,解决了密钥分发和管理问题。公钥密码学的出现极大地推动了密码学的应用和发展。
三、密码学主要技术
密码学的主要技术包括对称密码、公钥密码、单向散列函数、数字签名等。
-
对称密码:加密和解密使用相同的密钥。常见的对称密码算法有DES(已不安全)、AES(高级加密标准)等。对称密码算法具有加密强度高、速度快等优点,但密钥管理复杂。
-
公钥密码:又称非对称密码,加密和解密使用不同的密钥。公钥加密、私钥解密是常见的使用方式。常见的公钥密码算法有RSA、ECC(椭圆曲线加密算法)等。公钥密码算法解决了密钥分发和管理问题,但加密速度相对较慢。
-
单向散列函数:又称Hash算法,输入不同长度的消息生成固定长度的摘要值。常见的单向散列函数有MD5(已不安全)、SHA-2(包括SHA-224、SHA-256等)、SHA-3等。单向散列函数具有单向性、抗碰撞性等特点,广泛应用于文件完整性保护、密码保护等领域。
-
数字签名:使用非对称加密算法实现数字签名,确保消息的来源和完整性。数字签名是公钥加密的逆过程,即私钥签名、公钥验签。数字签名广泛应用于电子合同、文档认证、电子邮件等领域。
四、密码学应用场景
密码学在各个领域都有广泛的应用,主要包括以下几个方面:
-
网络通信:TLS/SSL协议用于加密网络数据传输,SSH协议用于远程登录和文件传输等。这些协议都依赖于密码学技术来保障通信的机密性、完整性和可用性。
-
电子商务:在电子商务中,密码学用于加密支付信息和交易数据以及保护用户隐私。通过公钥密码算法和数字签名技术,可以确保交易的真实性和安全性。
-
数字签名:数字签名是一种保证文件或消息来源和完整性的方法。它被广泛应用于电子合同、文档认证、电子邮件等领域。通过数字签名技术,可以验证消息的来源和完整性,防止篡改和伪造。
-
信息安全:密码学是信息安全的重要组成部分。它应用于数据备份和恢复、加密存储和访问控制等领域。通过密码学技术,可以保护信息的机密性、完整性和可用性,防止信息泄露和破坏。
-
物联网:在物联网中,密码学可以提供设备之间的安全通信、认证和授权。通过公钥密码算法和数字签名技术,可以确保IoT设备及其数据的安全性和可靠性。
-
区块链:密码学技术被广泛应用于区块链中。例如,比特币的加密货币交易和以太坊的智能合约等都依赖于密码学技术来保障交易的真实性和安全性。