cryptohack wp day
Posted Cryglz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cryptohack wp day相关的知识,希望对你有一定的参考价值。
对称密码学
Keyed Permutations
"一对一对应"的数学术语是双射(bijection)。如果一个函数将其定义域中的每个元素映射到其值域中的唯一元素,并且反过来也是如此,那么该函数就被称为双射。在块密码的背景下,双射确保在使用特定密钥时,每个可能的输入块都映射到一个唯一的输出块,反之亦然。这种属性对于加密和解密过程的安全性和正确性至关重要。
Resisting Bruteforce
针对 AES 的最佳单密钥攻击的名称是 Biclique Cryptanalysis。这种攻击利用了AES加密过程中的特定性质,通过寻找两个具有特定关系的密文块,然后逆推它们的明文和密钥。它可以在$2126.1$的时间内破解AES-128,比理论上的$2$的暴力破解时间复杂度快得多,因此被认为是对AES加密的威胁。Biclique Cryptanalysis可以看作是Differential Cryptanalysis和Linear Cryptanalysis的结合,并使用了它们的一些技术和工具。
flag:cryptoBiclique
Structure of AES
def bytes2matrix(text):
""" Converts a 16-byte array into a 4x4 matrix. """
return [list(text[i:i+4]) for i in range(0, len(text), 4)]
def matrix2bytes(matrix):
""" Converts a 4x4 matrix into a 16-byte array. """
def matrix2bytes(matrix):
# 获取矩阵的行数和列数
rows = len(matrix)
cols = len(matrix[0])
# 创建一个空列表
result = []
# 按列顺序将矩阵中的每个元素添加到字节数组中
for i in range(cols):
for j in range(rows):
result.append(matrix[i][j])
# 返回生成的字节数组
return bytes(result)
# def matrix2bytes(matrix):
# """ Converts a 4x4 matrix into a 16-byte array. """
# return bytes(sum(matrix, []))
matrix = [
[99, 114, 121, 112],
[116, 111, 123, 105],
[110, 109, 97, 116],
[114, 105, 120, 125],
]
print(matrix2bytes(matrix))
#cryptoinmatrix
Round Keys
按照题目要求给出代码:
state = [
[206, 243, 61, 34],
[171, 11, 93, 31],
[16, 200, 91, 108],
[150, 3, 194, 51],
]
round_key = [
[173, 129, 68, 82],
[223, 100, 38, 109],
[32, 189, 53, 8],
[253, 48, 187, 78],
]
def add_round_key(s, k):
"""
对状态矩阵 s 和轮密钥 k 进行异或运算,返回一个新的状态矩阵。
"""
# 创建一个新的状态矩阵,初始化为零
result = [[0] * 4 for _ in range(4)]
# 对每个位置上的元素进行异或运算
for i in range(4):
for j in range(4):
result[i][j] = s[i][j] ^ k[i][j]
return result
def matrix2bytes(matrix):
# """ Converts a 4x4 matrix into a 16-byte array. """
return bytes(sum(matrix, []))
print(matrix2bytes(add_round_key(state, round_key)))
python 函数递归 day15
函数自己内部调用自己
无线循环会报错,所以需要一个明确的结束条件
def calc(n): print(n) calc(n) calc(10)
def calc(n): print(n) if int(n/2) == 0: return n return calc(int(n/2)) calc(10)
问路例题
person = [‘wl‘,‘wp‘,‘jp‘,‘yby‘,‘tyn‘] import time def askway(person): print(‘-‘*60) if len(person) == 0: return ‘根本没人知道‘ p = person.pop(0) # 列表一次弹出一个 if p == ‘yby‘: return ‘%s说:下个路口见‘%p print(‘hi boy%s,敢问路在何方‘%p) print(‘%s回答道:我不知道,我帮你问问%s```‘%(p,person)) time.sleep(3) res = askway(person) return res res = askway(person) print(res)
以上是关于cryptohack wp day的主要内容,如果未能解决你的问题,请参考以下文章