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的主要内容,如果未能解决你的问题,请参考以下文章

cryptohack wp day

cryptohack wp day

cryptohack wp day

Cryptohack wp (GENERAL篇)

cryptohack wp (CRYPTO ON THE WEB篇)(持续更新)

WP-2021祥云杯