公司网站布局,闲置物品交易网站怎么做的,百度搜索广告,开发一款软件题目代码:
# 导入所需的库和从secret模块加载flag
from secret import flag
from os import urandom
from pwn import xor
from Cryptodome.Util.number import *# 生成两个随机的 64 位素数#xff0c;分别存储在变量 k1 和 k2 中
k1 getPrime(64)
k2 getPrim…题目代码:
# 导入所需的库和从secret模块加载flag
from secret import flag
from os import urandom
from pwn import xor
from Cryptodome.Util.number import *# 生成两个随机的 64 位素数分别存储在变量 k1 和 k2 中
k1 getPrime(64)
k2 getPrime(64)# 定义常量 ROUND它的值为 12
ROUND 12# 使用 XOR 操作将 flag 和 k1 的二进制表示进行异或运算生成密文
ciphertext xor(flag, long_to_bytes(k1))# 定义一个左循环移位函数 round_rotate_left用于在后续的加密中进行位操作
def round_rotate_left(num, step):return ((num) step | num (64 - step)) 0xffffffffffffffff# 定义一个加密函数 encrypt_key用于对密钥 k1 进行一系列的操作
def encrypt_key(key):for _ in range(ROUND):# 将密钥 key 左循环移位 3 位并与 k2 进行按位异或操作key round_rotate_left(key, 3) ^ k2return key# 打印输出密文、经过加密的 k1以及 k2 的值
print(ciphertext , ciphertext)
print(enc_k1 , encrypt_key(k1))
print(k2 , k2)这是一个简单的类似lfsr的循环补位 直接逆着rotate_right即可 exp:
# 导入所需的库
from pwn import xor
from Crypto.Util.number import *# 给出的密文
ciphertext b\x8dSyy\xd2\xce\xe2\xd2\x98\x0fth\x9a\xc6\x8e\xbc\xdezl\xc0\x85\xe0\xe4\xdfQlc# 给出的经过加密的 k1 和 k2 的值
enc_k1 7318833940520128665
k2 9982833494309156947# 定义一个右循环移位函数 round_rotate_right用于在后续的解密中进行位操作
def round_rotate_right(num, step):return ((num) step | num (64 - step)) 0xffffffffffffffff# 迭代 12 次来解密密文
for _ in range(12):# 对 enc_k1 进行反向位操作首先是异或操作enc_k1 ^ k2# 然后进行右循环移位 3 位enc_k1 round_rotate_right(enc_k1, 3)# 最终对解密后的 enc_k1 和密文进行异或操作还原原始的 flag
original_flag xor(long_to_bytes(enc_k1), ciphertext)# 输出还原的 flag
print(original_flag)
#flag{z3_s0lv3r_15_bri11i4nt}