• Crypto(4)NewStarCTF 2023 week2 Crypto Rotate Xor


    题目代码:

    1. # 导入所需的库和从secret模块加载"flag"
    2. from secret import flag
    3. from os import urandom
    4. from pwn import xor
    5. from Cryptodome.Util.number import *
    6. # 生成两个随机的 64 位素数,分别存储在变量 k1 和 k2
    7. k1 = getPrime(64)
    8. k2 = getPrime(64)
    9. # 定义常量 ROUND,它的值为 12
    10. ROUND = 12
    11. # 使用 XOR 操作,将 "flag" 和 k1 的二进制表示进行异或运算,生成密文
    12. ciphertext = xor(flag, long_to_bytes(k1))
    13. # 定义一个左循环移位函数 round_rotate_left,用于在后续的加密中进行位操作
    14. def round_rotate_left(num, step):
    15. return ((num) << step | num >> (64 - step)) & 0xffffffffffffffff
    16. # 定义一个加密函数 encrypt_key,用于对密钥 k1 进行一系列的操作
    17. def encrypt_key(key):
    18. for _ in range(ROUND):
    19. # 将密钥 key 左循环移位 3 位,并与 k2 进行按位异或操作
    20. key = round_rotate_left(key, 3) ^ k2
    21. return key
    22. # 打印输出密文、经过加密的 k1,以及 k2 的值
    23. print('ciphertext =', ciphertext)
    24. print('enc_k1 =', encrypt_key(k1))
    25. print('k2 =', k2)

     这是一个简单的类似lfsr的循环补位 直接逆着rotate_right即可
    exp:

    1. # 导入所需的库
    2. from pwn import xor
    3. from Crypto.Util.number import *
    4. # 给出的密文
    5. ciphertext = b'\x8dSyy\xd2\xce\xe2\xd2\x98\x0fth\x9a\xc6\x8e\xbc\xde`zl\xc0\x85\xe0\xe4\xdfQlc'
    6. # 给出的经过加密的 k1 和 k2 的值
    7. enc_k1 = 7318833940520128665
    8. k2 = 9982833494309156947
    9. # 定义一个右循环移位函数 round_rotate_right,用于在后续的解密中进行位操作
    10. def round_rotate_right(num, step):
    11. return ((num) >> step | num << (64 - step)) & 0xffffffffffffffff
    12. # 迭代 12 次来解密密文
    13. for _ in range(12):
    14. # 对 enc_k1 进行反向位操作,首先是异或操作
    15. enc_k1 ^= k2
    16. # 然后进行右循环移位 3
    17. enc_k1 = round_rotate_right(enc_k1, 3)
    18. # 最终,对解密后的 enc_k1 和密文进行异或操作,还原原始的 "flag"
    19. original_flag = xor(long_to_bytes(enc_k1), ciphertext)
    20. # 输出还原的 "flag"
    21. print(original_flag)
    22. #flag{z3_s0lv3r_15_bri11i4nt}

     

  • 相关阅读:
    卷积层参数个数计算公式,卷积操作的计算复杂度
    C++ 构造函数
    千万级流量冲击下,如何保证极致性能
    OA项目之会议通知(查询&是否参会&反馈详情)
    LinkedHashMap实现LRU缓存cache机制,Kotlin
    ubuntu安装配置svn
    Stable Diffusion 图生图+ControlNet list index out of range
    剖析 SPI 在 Spring 中的应用
    网络面试-卧槽!牛皮了,居然把TCP三次握手四次挥手讲的这么详细
    Android 9.0 屏蔽设备的WLAN功能
  • 原文地址:https://blog.csdn.net/m0_66039322/article/details/133941665