You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻找4字节前缀:使拼接原字节串后的SHA256哈希末尾为0xca、0xfe

寻找满足SHA256后缀条件的4字节前缀

给定十六进制字节串:

f064b8b61422a3456cb273a474a1fb0cabb04200a6a82a9426bd01f56c97fbf8c4ef58634fd5cf21af29e7db3406de4f886fe71408696789f853af9932a84b79

需要找到一个4字节前缀,将其与上述字节串拼接后,计算SHA256哈希值,要求哈希结果的最后两个字节为0xca和0xfe(即十六进制后缀为cafe)。


解法思路

这是典型的哈希部分碰撞问题,核心逻辑是暴力枚举4字节的所有可能取值:

  • 4字节共有2^32(约42.9亿)种组合,单线程枚举耗时较长,可通过多线程/多进程并行计算缩短耗时。
  • 无需复杂的哈希算法优化,直接基于标准SHA256实现枚举验证即可,实现成本低且逻辑清晰。

代码实现示例

以下是Python版本的暴力枚举代码(可扩展为多线程版本提升速度):

import hashlib

# 原十六进制字节串转二进制
original_hex = "f064b8b61422a3456cb273a474a1fb0cabb04200a6a82a9426bd01f56c97fbf8c4ef58634fd5cf21af29e7db3406de4f886fe71408696789f853af9932a84b79"
original_bytes = bytes.fromhex(original_hex)

# 目标后缀:最后两个字节为0xca 0xfe
target_suffix = b'\xca\xfe'

# 枚举所有4字节组合(0x00000000 到 0xffffffff)
for prefix_int in range(0, 2**32):
    # 将整数转为4字节大端序(若结果不符可尝试小端序,将byteorder改为'little')
    prefix_bytes = prefix_int.to_bytes(4, byteorder='big')
    # 拼接前缀与原字节串
    combined_data = prefix_bytes + original_bytes
    # 计算SHA256哈希
    hash_result = hashlib.sha256(combined_data).digest()
    # 验证后缀是否匹配
    if hash_result[-2:] == target_suffix:
        print(f"符合条件的前缀(十六进制):{prefix_bytes.hex()}")
        print(f"拼接后数据的SHA256哈希:{hash_result.hex()}")
        break

优化提示

  • 若追求更快的计算速度,可改用C++/Go等编译型语言实现,或利用GPU加速(如CUDA框架),这类暴力枚举任务对并行计算能力依赖较高。
  • 题目未指定前缀字节序,默认使用大端序,若未找到结果可切换为小端序尝试。

内容的提问来源于stack exchange,提问作者Hamza Yasin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:40:33